【发布时间】:2015-09-16 18:02:39
【问题描述】:
这是一个我想调用它的返回值的函数,在那个函数中我想使用一个异步调用来设置一个标志以便以后使用:
function getSomething() {
var isOk;
myAsyncFunction(function(data) {
if (data === 'foo') {
isOk = true;
}
});
//...
if (isOk) {
return true;
}
}
我想像这样使用 getSomething():
if (getSomething()) {...}
我知道它不会暂停此函数的执行以等待我的异步调用完成。我也知道 return true 语句不应该在异步函数的回调中。但是我怎样才能等待异步函数的回调呢?我应该将我的 getSomething() 调用转换为承诺还是有其他方法?如果我使用承诺,getSomething() 的调用会是什么样子?提前致谢!
【问题讨论】:
-
myAsyncFunction应该返回一个承诺,你应该从getSomething返回那个承诺。 -
“但是我怎么能等待异步函数的回调呢?” 你不能,那是不可能的。唯一的选择是直接或在 promise 对象上使用回调。
标签: javascript jquery asynchronous