Promise的链式调用什么原理?

大家都知道jQuery的链式调用是return this的妙用,那么Promise的呢?比如

function start() {  
    return new Promise((resolve, reject) => {  
      resolve('start');  
    });  
  }  
    
  start()  
    .then(data => {  
      // promise start  
      console.log('result of start: ', data);  
      return Promise.resolve(1); // p1  
    })  
    .then(data => {  
      // promise p1  
      console.log('result of p1: ', data);  
      return Promise.reject(2); // p2  
    })  
    .then(data => {  
      // promise p2  
      console.log('result of p2: ', data);  
      return Promise.resolve(3); // p3  
    })  
    .catch(ex => {  
      // promise p3  
      console.log('ex: ', ex);  
      return Promise.resolve(4); // p4  
    })  
    .then(data => {  
      // promise p4  
      console.log('result of p4: ', data);  
    });

result of start: start
result of p1: 1
ex: 2
result of p4: 4

第三步,reject的还被下一步的then忽略掉了,这种链式调用是什么原理?怎么实现的?


海绵宝宝撒
浏览 1174回答 2
2回答

蛊毒传说

因为啊,每个then都返回一个新的promise,每个then都返回一个新的promise,每个then都返回一个新的promise。返回的新的promsie会在上一个promise的状态变更改时候开始执行,以此类推,每次返回的新的promise被挂在上一个promise上,就此串成了一串
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Node.js