JavaScript中的Map异步

时间:2019-02-17 10:22:44

标签: javascript node.js asynchronous collections async-await

是否有一种方法可以对Map集合的实例使用async.each(或类似的smth)来遍历集合上的所有键值对并执行smth,例如调用foo(key,value,cb)每对吗?

1 个答案:

答案 0 :(得分:1)

是的,您可以为map定义一个异步函数,并对每个值使用await,然后再继续。请记住最后要使用Promise.all(),因为asyncMap将是需要解决的一系列诺言。

function doSomething(arr) {
    var asyncMapArr = arr.map(async item => {
        item = await yourFunction(item);
        return item;
    });

    console.log("Initial array: ", arr);
    console.log("In progress array: ", asyncMapArr);
    Promise.all(asyncMapArr)
    	.then(result => console.log("Updated array: ", result));
}

function yourFunction(value) {
    // you can run your async code here and return a promise in the end
    return new Promise(function(resolve, reject) {
        resolve(value + 1);
    });
}

var arr = [1, 2, 3];

doSomething(arr);