等待异步回调,然后返回

时间:2015-09-16 18:02:39

标签: javascript jquery asynchronous

这是一个我想要为其返回值调用的函数,在该函数中我想使用异步调用来设置一个标志以便以后使用:

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()的调用会怎样?提前谢谢!

1 个答案:

答案 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