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) 
          })
      
posted @ 2020-07-10 14:15  Yogic  阅读(3734)  评论(0编辑  收藏  举报