JS,如何在循环中获得承诺

JS, how to get promises in loops

我最近才开始使用 js,但仍然无法理解循环中的承诺。 我正在使用 repl.it 数据库。假设我有一个包含键的数组,我想查询数组的每个元素以将值放入另一个数组中。

类似这样的东西(当然,这段代码是行不通的):

var arr = ['key1','key2','key3'];
var newarr = ['name1','name2','name3'];

for (var i = 0; i < arr.length; i++) {
   db.get(arr[i]).then(val=> {
   newarr[i] = { name: newarr[i], value: val };
   });
};

console.log(newarr) // [ { name: name1, value: value1 },{ name: name2, value: value2 },{ name: name3, value: value3 } ]

您可以尝试将 for 循环包装在异步函数中并在 db.get

之前添加 await

像这样:

const getData = async () => {
    try {
        for (var i = 0; i < arr.length; i++) {
            await db.get(arr[i]).then(val => {
                newarr[i] = { name: newarr[i], value: val };
            });
        };
    } catch (err) {
        console.log('err:', err)  //handle errors
    }
    console.log(newarr)
}

getData() // run it