[英]Why doesn't the add wait for the timeout promise to resolve?
Trying to play with how promises and async code works by making a calculator that will give me the answer after the given ms.尝试通过制作一个计算器来尝试使用 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))
Why isn't the add function waiting for the timeout?为什么 add 函数不等待超时? It goes directly to resolve regardless of how many ms I pass in. Omitted reject to make it more clear.
无论我传入多少毫秒,它都会直接解决。省略拒绝以使其更清楚。
Change:改变:
timeout(1000).then(resolve(number1 + number2));
To:到:
timeout(1000).then(() => resolve(number1 + number2))
Your code is not waiting but just calling resolve.您的代码不是在等待,而是在调用 resolve。
You call resolve immediately:您立即致电解决:
const add = (number1, number2) => {
return new Promise(resolve => {
timeout(1000).then(() => {
resolve(number1 + number2);
});
});
};
As timeout
is a Promise you can remove your outer completely:由于
timeout
是一个承诺,您可以完全删除您的外部:
const add = (number1, number2) => {
return timeout(1000).then(() => {
return number1 + number2;
});
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.