我有一个代码段https://jsfiddle.net/h3m10005/
let p = new Promise((resolve, reject) =>{
setTimeout(()=>reject('error'), 5000);
});
p.then(null,(err)=>{
console.log(err);
});
当上面的代码部分被执行时,大约 5 秒后我将看到打印出 error
。但是,如果我不将reject() 调用包装在函数中,控制台会立即输出error
。例如,
let p = new Promise((resolve, reject) =>{
setTimeout(reject('error'), 5000);
});
p.then(null,(err)=>{
console.log(err);
});
知道为什么会出现这种情况吗?谢谢。
最佳答案
这是因为在您的第二个示例中您立即调用它。
setTimeout(reject('error'), 5000);
本质上是使用调用reject('error')的结果作为setTimeout的第一个参数。
关于javascript - 使用 setTimeout 来解决或拒绝 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40902802/