我知道,使用回调意味着该函数将等到返回结果之前返回结果,但是如果我想执行进一步的代码,该怎么办?
下面是我要执行的示例。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
}
});
}