Javascript Promise.all 使用 .then() 调用函数

问题描述 投票:0回答:1

我使用 Promise.all the trig a function 在所有 Promise 都得到解决后。

它有效,但我不明白为什么要调用一个函数,我必须使用 anonimus 函数,并且我不能直接调用我的函数。 这就是例子。

Promise.all(jarOfPromise)
  .then(_ => {
    drawAllCard(images);
  });
  //.then(drawAllCard(images));

如果我像这样直接调用该函数:

Promise.all(jarOfPromise)
  .then(drawAllCard(images));

它不起作用,有任何错误。

我尝试寻找原因,但没有找到任何解释。

javascript promise
1个回答
0
投票

当你这样做时:

Promise.all(jarOfPromise)
  .then(drawAllCard(images));

您正在立即致电

drawAllCard(images)
。这不是传递稍后可以调用的回调的正确方法。

实际发生的情况是,Javascript 解释器看到此语句后会立即计算

drawAllCard(images)
以从中获取返回值,然后将该结果传递给
Promise.all().then(x)

你的第二个例子相当于这个:

const temp = drawAllCard(images);
Promise.all(jarOfPromise).then(temp);
© www.soinside.com 2019 - 2024. All rights reserved.