我知道使用回调意味着函数将等到返回结果之前返回结果,但是如果我想执行更多代码呢?
以下是我正在尝试执行的示例。 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);
}
}
答案 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
}
});
}