js 解決異步操做回調地獄經常使用的方法

查找一個班的學生,再查找每一個學生參加的課程api

// callback爲請求成功的回調函數
// 具體查找的api這裏再也不舉例

查找學生異步方法 getStu(callback);
查找每一個學生參加的課程異步方法 getCourse(callback);promise

由以上分析可知 須要等查找學生的請求返回後才能根據學生id查找每一個學生的課程,如下爲不一樣的解決方法異步

Promiseasync

let getStuPromise = new Promise((resolve,reject)=>{
    getStu(function(res){
        resolve(res.data);
    });
});
getStuPromise.then((data)=>{
    // 獲得每一個學生的課程
    getCourse();
    // 還能夠繼續返回promise 對象
});

Generator函數

function *generatorGetStu(){
    let stus = yield getStu();
    // 等到getStu異步執行完纔會執行getCourse
    let course = yield getCourse();
}

asynccode

async getEveryCourse(){
    let stus = await getStu();
    // 等到getStu異步執行完纔會執行getCourse
    let course = await getCourse();
}
相關文章
相關標籤/搜索