我可以在forEach()数组助手之后链接.then()吗?

时间:2018-12-21 20:32:32

标签: javascript asynchronous foreach callback

我可以做这样的事情吗?

const array = ["foo", "bar", "hello", "etc"];

array.forEach(item => process(item)).then(() => {
    //run after forEach is done processing the whole array
});

3 个答案:

答案 0 :(得分:1)

不。然后用于处理承诺。 forEach是同步的,因此您可能应该将处理后的项目保存在一个新数组中,然后立即执行后处理逻辑。

答案 1 :(得分:1)

const values = ["foo", "bar", "hello", "etc"];
Promise.all(values.map(process)).then((results)=>{
    //run after all promises are resolved
    console.log(results instanceof Array); // prints true
});

您可以使用Promise.all()来解析一个promise数组,并使用values.map(process)对每个数组项作为参数执行process()函数。

答案 2 :(得分:1)

如果您打算在forEach之后执行一些步骤,则可以按顺序执行步骤,因为(forEach是同步的)

执行第1行

const array = ["foo", "bar", "hello", "etc"];

第2行执行

array.forEach(item => process(item))

第3行执行

//Write your steps here to do after array.forEach