promise,Generator函数,async函数区别与理解

2019-03-05-20:46 于钉钉

Promise

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

//回调写法
function fun1(value,callback) {
    value++
    setTimeout(function() {
            value++
        setTimeout(function(){
                value++
           setTimeout(function(){
                console.log(value)
           },2000);
        },2000);
    ,2000);
}
fun1() // 4

//Promise写法
function fun1(value) {
    retrun  new Promise((resolve,reject)=> {
        setTimeout(function(callback){
            resolve(value++)
        },2000);
    }) 
}

fun1(0).then((value)=> {
    return  new Promise((resolve,reject)=> {
        setTimeout(function(callback){
            resolve(value++)
        },2000);
}).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 的部分等待返回, 返回后自动执行下一步。而且相较于Promiseasync 的优越性就是把每次异步返回的结果从 then 中拿到最外层的方法中,不需要链式调用,只要用同步的写法就可以了。

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

你可能感兴趣的:(promise,Generator函数,async函数区别与理解)