nodejs-等待变量:回调



我知道,使用回调意味着该函数将等到返回结果之前返回结果,但是如果我想执行进一步的代码,该怎么办?

下面是我要执行的示例。isAvailable检查某人的帐户中是否有足够的余额,如果他们可以撤回他们的钱。

我的问题是此函数会异步执行,因此在执行if语句之前,它不会等待余额返回。如果是这样,我该怎么办?

function isAvailable(user, withdrawal, callback) {
  var balance = getBalance(user, callback);
  if (withdrawal > balance) {
    callback(false);
  } else if (withdrawal < balance) {
    callback(true);
  } 
}

我知道使用回调将意味着该功能将等到返回结果后返回结果

否。异步意味着它们立即返回(什么都没有),但是以后将回调函数与结果调用。

在您的示例中,您将获得balance不是getBalance的返回值,而是对调用回调函数的参数作为第二个参数:

getBalance(user, function(balance) {
    …
});

在其中,您将放置进一步执行的代码:

function isAvailable(user, withdrawal, callback) {
    getBalance(user, function(balance) {
        if (withdrawal > balance) {
            callback(false);
        } else if (withdrawal < balance) {
            callback(true);
        } else { // if (withdrawal == balance)
            callback(null); // don't forget this
        }
    });
}

最新更新