Nodejs - 等待变量:回调

时间:2017-08-29 21:10:13

标签: javascript node.js callback

我知道使用回调意味着函数将等到返回结果之前返回结果,但是如果我想执行更多代码呢?

以下是我正在尝试执行的示例。 isAvailable检查某人是否在其帐户中有足够的余额,如果他们可以取款,则返回true。

我的问题是这个函数是异步执行的,因此在if语句执行之前它不会等待余额返回。我应该将if语句分离到另一个函数并使用回调来等待余额吗?如果是这样,我该怎么做?

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

1 个答案:

答案 0 :(得分:4)

  

我知道使用回调意味着函数将等到返回结果之前返回结果

没有。异步意味着它们立即返回(无),但稍后用结果调用回调函数。

在您的示例中,您将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
        }
    });
}