Promise 嵌套链式调用的问题

5 篇文章 0 订阅
1 篇文章 0 订阅

Promise链式调用嵌套的问题,哈哈哈 虽然这个问题在正常开发中应该不会遇到,但是谁让咱们是程序员呢, 就是喜欢搞事情,这个问题就是搞Promise链式嵌套调用

new Promise(function Promise1(resolve,reject){
     console.log("promise1")
        resolve()
    }).then(function Then1(){
        console.log("then1")
        new Promise(function Promise2(resolve,reject){
            console.log("promise2")
            resolve()
        }).then(function Then11(){
            console.log("then11")
        }).then(function Then111(){
            console.log("then111")
        }).then(function Then1111(){
            console.log("then1111")
        })
    }).then(function Then12(){
        console.log("then12")
    })

    new Promise(function Promise3(resolve,reject){
        console.log("promise3")
        resolve()
    }).then(function Then2(){
        console.log("then2")
    }).then(function Then21(){
        console.log("then21")
    }).then(function Then211(){
        console.log("then211")
    })

执行结果
在这里插入图片描述
结果中我们发现个问题就是为什么then11 是优先于then12执行的呢???

我们来画一下这一堆链式调用的链子,每一个红框都是自上而下的执行顺序。
在这里插入图片描述

从这个执行顺序当中我们,可以看出应该是先执行Then12 ,再执行Then11的呀,可是我们就忽略Promise中Then的定义:

then里面的是回调函数,它需要等上一层执行完才调用下面的then

在第二层Then1的时候,Then12 还没有建立,因为Then1中有同步代码Promise2,要走完Promise2,Promise2调用了个Then11, 才会建立Then12,所有再输出的时候,Then11 是优先于 Then12的

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值