javascript - 使用 setTimeout 来解决或拒绝 promise

标签 javascript promise settimeout es6-promise

我有一个代码段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/

相关文章:

javascript - 需要使用 JQuery 和 Shopify 创建集合并使用返回的 ID 添加产品的示例

javascript - 在nodejs应用程序中读取res.json

javascript - 从 AngularJS 中的链式 .then() 函数返回的 Promise 之间的关系是什么

javascript - 使用 JavaScript 保持一致的客户端日期/时间戳(考虑时区)

javascript - 如何仅在 react 文档的特定字段发生变化时才运行跟踪器计算?

node.js - 链接 promise 更新 Mongoose 中的引用文档

javascript - 我如何用 q 做一个回调链?

javascript - 如何将 setTimeout() 与 React Hooks useEffect 和 setState 一起使用?

javascript - 基于 Promise 的异步 setTimeout? promise  {<pending>} 错误

javascript - 使用 setTimeout 重新加载图像