Nodejs - 等待一个变量:回调
问题描述:
我知道使用回调将意味着该函数将等待返回结果之前返回结果,但如果我想执行进一步的代码呢?Nodejs - 等待一个变量:回调
下面是我正在尝试执行的一个示例。 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);
}
}
答
据我所知,使用回调将意味着功能会等到一个结果已经返回结果
号作为异步意味着他们返回(无)之前已经返回,但稍后调用结果的回调函数。
在你的榜样,你会得到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
}
});
}
*“我的问题是,这个函数异步执行,因此不会等待之前要返回的平衡,如果执行的语句” *我有一个偷偷摸摸的怀疑,getBalance不退缩平衡期间。 X/Y问题。 –
getBalance经过测试,它的工作原理:) – Sprout
**证明它。** :)它不可能返回一个当它返回时不存在的值。 –