为什么添加不等待超时承诺解决?

Why doesn't the add wait for the timeout promise to resolve?

尝试通过制作一个计算器来了解 promises 和异步代码的工作原理,该计算器会在给定的毫秒后给我答案。

const timeout = ms => new Promise(resolve => setTimeout(resolve, ms));

const add = (number1, number2) => {
  return new Promise(resolve => {
    timeout(1000).then(resolve(number1 + number2));
  });
};

add(5,3).then(result => console.log(result))

为什么添加函数没有等待超时?不管我传入多少毫秒,直接去resolve。省略reject,说得更清楚。

变化:

timeout(1000).then(resolve(number1 + number2));

收件人:

timeout(1000).then(() => resolve(number1 + number2))

您的代码不是在等待,而是在调用 resolve。

您立即调用resolve:

const add = (number1, number2) => {
  return new Promise(resolve => {
    timeout(1000).then(() => {
      resolve(number1 + number2);
    });
  });
};

因为 timeout 是一个 Promise 你可以完全移除你的外衣:

const add = (number1, number2) => {
  return timeout(1000).then(() => {
    return number1 + number2;
  });
};