这是一个我想要为其返回值调用的函数,在该函数中我想使用异步调用来设置一个标志以便以后使用:
def password_constraints
@password_constraints[:length] << ' Must contain.' << @password_constraints[:contain].join(', ')
end
我想要像这样使用getSomething():
function getSomething() {
var isOk;
myAsyncFunction(function(data) {
if (data === 'foo') {
isOk = true;
}
});
//...
if (isOk) {
return true;
}
}
我知道它不会暂停执行此功能以等待我的异步调用完成。我也知道return true语句不应该在async函数的回调中。但是我怎么能等待异步函数的回调呢?我应该将我的getSomething()调用转换为承诺还是以其他方式?如果我使用promises,getSomething()的调用会怎样?提前谢谢!
答案 0 :(得分:0)
您可以使用JavaScript Promise
var promise = new Promise(function(resolve, reject) {
if (/* everything turned out fine */) {
resolve("worked!");
}
else {
reject(Error("broke"));
}
});
如何使用
promise.then(function(result) {
console.log(result); // "worked!"
}, function(err) {
console.log(err); // Error: "broke"
});
有关详细信息,请访问此链接Promise