变量在Promise函数中变为未定义

时间:2018-02-08 21:51:40

标签: arrays node.js promise

我在全局范围内有一个数组(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 个答案:

答案 0 :(得分:1)

i的值在任何targets.length回调执行之前都会进展到最终值(即then),因此任何i的使用都是let i指数将超出范围。

使用var i代替i制作不会出现此问题的{{1}}个单独实例。