簡體   English   中英

為什么 add 不等待超時承諾解決?

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

嘗試通過制作一個計算器來嘗試使用 Promise 和異步代碼的工作方式,該計算器將在給定的毫秒后給我答案。

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))

為什么 add 函數不等待超時? 無論我傳入多少毫秒,它都會直接解決。省略拒絕以使其更清楚。

改變:

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

到:

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

您的代碼不是在等待,而是在調用 resolve。

您立即致電解決:

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

由於timeout是一個承諾,您可以完全刪除您的外部:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM