Promise 函数中的变量变为未定义
2018-02-08
493
我有一个全局范围内的数组 (
targets
),我将它的值传递给执行一些文本转换的外部函数 [第三方库,
externalConverter
]。此数组的值被传递到
convert
函数,转换正常进行。
const targets = [‘box’, ’box1’, ’box2’, ’box3’]
for (var i = 0; i < targets.length; ++i) {
console.log(targets[i]); // this is coming out fine
externalConverter
.convert(data.text, targets[I])
.then(results => {
data.convertedText.push({
[targets[i]]: results[0]
});
//above convertedText array comes out as
//{“undefined: ”, “nice converted text”}, ...
})
}
在 Promise 的结果中,我尝试访问
targets
值,但在上面的函数中获取
undefined
值。我不确定为什么目标突然变成
undefined
有什么想法吗?
1个回答
在任何
then
回调执行之前,
i
的值将已发展为其最终值(即
targets.length
),因此使用
i
作为索引的任何行为都将超出范围。
使用
let i
而不是
var i
来创建单独的
i
实例,这样就不会出现此问题。
trincot
2018-02-08