美文网首页
promise和async原理

promise和async原理

作者: tanjinrong123 | 来源:发表于2021-05-07 16:27 被阅读0次

    const aa= async (params, isDetails) => {  

      const { data } = await request.post({xx})

      return data

    }

     aa是一个async函数,返回的总是一个promise实例,而不是data

    1. 没有显式return,相当于return Promise.resolve(undefined);

    2. return非Promise的数据data,相当于return Promise.resolve(data);

    3. return Promise, 会得到Promise对象本身

    下图为aa函数调用的返回结果:

    data在primseResult里面。aa.then((res)=<{

       //这个res就是data

    })

    Promise是一个构造函数,new Promise()时,接受一个函数作为参数,且这个函数有两个参数,分别是resolve,reject。 而resolve和 reject也是两个函数。在生成实例的时候,里面的函数会立即执行

    每一个被实例化出来的promise实例,都有.then() 和 .catch() 两个方法。且这两个方法的调用支持链式操作

    then和catch方法是添加在Promise的原型上的。即Promise.prototype.then(), 故所有Promise实例都存在.then()和catch方法

    .then((res)=>{},(err)=>{}) 第一个是resolve回调函数,第二个是reject函数。res和err是上次回调的返回值

    1、.then((res)=>{      没有返回值,则默认return undefined 。该resolve函数会返回一个默认的promise对象,状态为resolved,走到下面的.then

    },(err)=>{

    })

    2、.then((res)=>{      //返回一个常量。该resolve函数会返回一个默认的promise对象,状态为resolved,走到下面的.then

    return 123

    },(err)=>{

    })

    3、.then((res)=>{

    return new Promise(

    (resolve, reject) => { resolve('456') })   //返回的是定义好的promise,则返回的状态为这个promise的状态,成功则走.then,失败走.catch

    },(err)=>{

    })

    相关文章

      网友评论

          本文标题:promise和async原理

          本文链接:https://www.haomeiwen.com/subject/jgnklltx.html