如何从调用内部变量
问题描述:
功能得到回调,我有一些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 /异步但尚未完全支持。 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
答
该函数可以返回一个承诺:
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
}
);
在无极对象的“再”的方法,你需要传递时的承诺得到解决或者拒绝使用这两种功能。
有关承诺的更多信息:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise。
查看Promises:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Promise。 –
我在看如何正确地做到这一点,但无法弄清楚正确的语法。有任何想法吗? @EduardoMelo –