[英]How to get callback from calling function inside variable
我有一些类似于以下代码的Javascript代码:
var Requests = {
get: function(search) {
// HTTP request happens, returns data.
}
}
我试图在其他地方调用它,如下所示:
Requests.get('thing');
尽管这返回的是undefined,因为它没有等待http请求的结果。 我想知道如何才能将此请求推迟到成功为止,或者以某种方式检查调用代码中的回调。 谢谢!
你需要一个承诺。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise
var Requests = {
get: function(search){
return new Promise(resolve,reject){
//if it does what you want
if(data) resolve(data)
else reject(error)
}
}
}
接着
Requests.get('thing').then('do something else')
另一个选项是使用await / async,但尚不完全支持。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
该函数可以返回一个promise:
var Requests = {
get: function(search) {
return new Promise(function(resolve, reject){
// call resolve in case of success, and reject in case of error
})
}
}
Requests.get('thing').then(
function(response){
// success
},
function(error){
// something went wrong
}
);
在Promise对象的“ then”方法中,您需要传递在解决或拒绝Promise时使用的两个函数。
有关Promises的更多信息: https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.