两个问题。
1.:您定义lastbalance
为函数参数...它在lastbalance
您的函数上下文中创建了另一个变量...取代了在外部范围中声明的变量。
var lastbalance; // your outer variable
getBalance = function (lastbalance, callback) { // weeeee, another lastbalance
btcclient.getBalance('*', 0, function (err, balance) {
if (err) return console.log(err);
if (lastbalance != balance || typeof lastbalance == 'undefined') {
console.log('Last Balance:' + lastbalance);
var lastbalance = balance;
updateCauses();
}
console.log('Balance:', balance);
if (typeof callback == 'function') callback();
});
};
setInterval(getBalance, 2000, lastbalance); //passing lastbalance by value
2.:你曾经在你的函数var
中声明另一个。lastbalance
不要那样做;它导致了上述相同的问题。
var lastbalance; // your outer variable
getBalance = function (lastbalance, callback) {
btcclient.getBalance('*', 0, function (err, balance) {
if (err) return console.log(err);
if (lastbalance != balance || typeof lastbalance == 'undefined') {
console.log('Last Balance:' + lastbalance);
var lastbalance = balance; // here you create a local lastbalance.
// remove the var keyword to refer to
// the original lastbalance
updateCauses();
}
console.log('Balance:', balance);
if (typeof callback == 'function') callback();
});
};
setInterval(getBalance, 2000, lastbalance);
最后,您的代码应如下所示:
var lastbalance;
getBalance = function (/*lastbalance, */callback) { // remove parameter
btcclient.getBalance('*', 0, function (err, balance) {
if (err) return console.log(err);
if (lastbalance != balance || typeof lastbalance == 'undefined') {
console.log('Last Balance:' + lastbalance);
/*var*/ lastbalance = balance; // remove var
updateCauses();
}
console.log('Balance:', balance);
if (typeof callback == 'function') callback();
});
};
setInterval(getBalance, 2000/*, lastbalance*/); // remove argument