Promise 中的 then总结

Posted yogic

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Promise 中的 then总结相关的知识,希望对你有一定的参考价值。

  • Promise 中 then

    • promise的then中默认返回一个promise实例
    • 当then中没有return时返回的是undefined
    • 当then中return的对象或者基本类型等非new Promise实例时,对下一个进程then是同时执行的
          <!--同时执行111和222-->
          new Promise(()=>{})
          .then(val=>{
              console.log(111);
              return `string`;
          })
          .then(data=>{
              console.log(222);
              return data
          })
          .catch(err=>{
              console.error(err)
          })
      
    • 当then中return的是一个new Promise或者Promise.resolve()等实例时,对下一个进程then时队列顺序执行的
          <!--顺序执行 先111再222-->
          new Promise(()=>{})
          .then(val=>{
              console.log(111);
              return Promise.resolve(`string`);
          })
          .then(data=>{
              console.log(222);
              return data
          })
          .catch(err=>{
              console.error(err)
          })
      
    • 在node项目中,多少情况下都是以函数导出导入方式使用Promise【尤其是路由层和数据层】,此时一定要对函数return才有效
          <!--函数return-->
          <!--出 a.js-->
          const handerGetrouter = (reqObj)=>{
            ...
            return new Promise((resolve,reject)=>{
                resolve(6666)
            })
            .then((val)=>{
                return val;
            })
          }
          module.exports = {
              handerGetrouter
          }
          
          <!--入 b.js-->
          const {handerGetrouter}=require(‘a‘);
          ...
          handerGetrouter(reqObj)
          .then((data)=>{
              console.log(data);
              ....
          })
          .catch(err=>{
             console.error(err) 
          })
      

以上是关于Promise 中的 then总结的主要内容,如果未能解决你的问题,请参考以下文章

.then 中的代码在 Promise 之前执行

在javascript承诺中执行的顺序是什么

Promise和$.Deferred总结

Promise.prototype.then()学习

js的promise如何递归调用?

什么时候然后从Promise.all()的子句运行?