【发布时间】:2018-03-01 11:29:42
【问题描述】:
我正在为正常工作的价格数据调用 API。但是,我正在尝试将变量 exchange_pair_id 传递给 then() 函数。
在 forEach 循环中,每个asset 的 exchange_pair_id 都是正确的。然而在then() 函数内部,这个变量总是相同的(forEach 循环中的最后一个值)。
我正在尝试将exchange_pair_id 变量传递给then(function(response) {...}
response.forEach(function(asset) {
var assets = asset['assets'];
exchange_pair_id = asset['exchange_pair_id'];
options.uri = exchange_objects[exchange[0]].ticker + '?pair=' + assets[0] + assets[1]; // overwrite to fit the request to Kraken API
console.log(exchange_pair_id) // unique
rp(options).then(function(response) {
key = Object.keys(response['result']);
price_data = response['result'][key];
console.log(exchange_pair_id) // duplicate
});
});
【问题讨论】:
-
如果您使用“let exchange_pair_id = asset['exchange_pair_id'];”,这应该可以工作。试试吧,因为你每次都在回调函数的上下文中定义 exchange_pair_id
-
@MarouenMhiri 想说的是,您必须确保正确地确定变量的范围。每个没有关键字
var、let或const的变量都是全局变量。你希望它们在你的 forEach 中作用域,所以写var exchange_pair_id;很重要。 -
感谢两位,非常业余的错误让我今天早上吵了几个小时。不理解正确的变量声明是我的错。
标签: javascript node.js foreach