async +await 优化异步函数

异步函数发展的三个阶段:

1, callback

setTimeout( ()=>{},1000);  容易造成callback hell; 

2,promise 

还是需要不停的。then().then();

3,async +await  

就是generator 优化 promise的产物; async和await 要配合使用  ,这是es7 的内容

具体使用:

原来代码:

export function readmsg(chatman) {
    return (dispatch,getState)=>{
      axios.post('/user/readmsg',{from:chatman}).then(res=>{
          if(res.data.code===0){
              const userid=getState().user._id;
              dispatch(readtype(chatman,userid,res.data.num))
          }
      })
    }
}

改写以后的代码:

export function readmsg(chatman) {

    //首先使这个函数变成一个async函数
    return async (dispatch,getState)=>{
        //等待异步调用完成
    const res=await axios.post('/user/readmsg',{from:chatman});

        if(res.data.code===0){
            const userid=getState().user._id;
            dispatch(readtype(chatman,userid,res.data.num))
        }
    }
}

首先使得这个代码变成一个async函数;其次把then()去掉 ,等待回掉完成,在进行操作;

好处是:使得这个异步函数 变成同步的方式来调试; 可读性 大大的提高了

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值