我在全局范围内有一个数组(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
有什么想法吗?
答案 0 :(得分:1)
i
的值在任何targets.length
回调执行之前都会进展到最终值(即then
),因此任何i
的使用都是let i
指数将超出范围。
使用var i
代替i
制作不会出现此问题的{{1}}个单独实例。