关于Promise的pending状态

发布于 2022-09-05 14:42:50 字数 400 浏览 8 评论 0

       var p = Promise.resolve(123);
       var p1 = p.then(function(value){
               console.log("p1")
       });
       var p2 = p1.then(function(value){
               console.log("p2");
       });
       var p3 = p2.then(function(value){
               console.log("p3");
       });
       console.log(p,p1,p2,p3);

打印出来p1,p2,p3都是pending状态,那为什么这些then函数还是会执行?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冬天旳寂寞 2022-09-12 14:42:50

因为console.log(p,p1,p2,p3);这句代码运行早了,还没改变状态

你把下面代码加上试试

setTimeout(() => {
    console.log(p,p1,p2,p3);
},1000)
赤濁 2022-09-12 14:42:50

Promise.then是异步执行的,js执行了第一句就直接到最后console.log(p,p1,p2,p3);
然后 p1 , p2 , p3 对应的函数才执行。

魄砕の薆 2022-09-12 14:42:50
console.log(p,p1,p2,p3);

应该改为

p3.then(function(value){
   console.log(p,p1,p2,p3);
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文