promise,Generator函数,async函数区别

Promise
将原来的用 回调函数 的 异步编程 方法转成用relsove和reject触发事件, 用 then 和 catch 捕获成功或者失败的状态执行相应代码的异步编程的方法。

function fun1(value){
     return new promise((resolve,reject)=>{
     setTimeout(function(callback){
     resolve(value++)}
     ,3000);
     })
     }
 fun1(0).then((value)=>{
 return new promise((resolve,reject)=>{
   setTimeout(function(callback)=>{
   resolve(value++)
   ),3000);
   }).then((value)=> {
    return  new Promise((resolve,reject)=> {
        setTimeout(function(callback){
            resolve(value++)
        }2000)}).then(value)=>{
    console.log(value) 
}    // 4
   

Generator 函数
Generator函数是将函数分步骤阻塞 ,只有主动调用next()才能进行下一步。
dva 中异步处理用的是 Generator。
async 函数
简单的说async函数就相当于自执行的Generator函数,相当于自带一个状态机,在 await 的部分等待返回, 返回后自动执行下一步。而且相较于Promise,async 的优越性就是把每次异步返回的结果从 then 中拿到最外层的方法中,不需要链式调用,只要用同步的写法就可以了。

比 promise 直观,但是 async 必须以一个 Promise 对象开始 ,所以 async 通常是和Promise 结合使用的。

作者:Allan要做活神仙
链接:https://www.jianshu.com/p/3c695e078d91

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值