为什么添加不等待超时承诺解决?
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;
});
};
尝试通过制作一个计算器来了解 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;
});
};