async/await 遇上 foreach导致的问题?

今天看到mdn上关于数组的foreach方法,有这样一段示例

let ratings = [5, 4, 5];

let sum = 0;

let sumFunction = async function (a, b) {
    return a + b;
} 

ratings.forEach(async function(rating) {
    sum = await sumFunction(sum, rating);
})

console.log(sum);
// Expected output: 14
// Actual output: 0

mdn说导致这种结果的原因和执行顺序有关,我想了很久也不能理解 就自己试着log了一些,以下是我的截图,我觉得执行顺序并没问题啊,为什么sum每次都是0呢,为什么没有串行而是并行执行了呢?
WechatIMG13364.jpeg

阅读 287
评论 1月14日提问
    5 个回答
    一直在晒网的渔民
    • 2
    • 新人请关照

    好好理解even loop,其实就是同步和异步的先后顺序,异步又分优先级执行,也就是宏任务和微任务,先执行微任务再执行宏任务,promise是微任务,还有一些微任务等

    评论 赞赏 1月15日