02_12.使用promise解決回調(diào)嵌套問題

<script>
    // 需求: 使用promise改造下面的代碼
    // setTimeout(function() {
    //     console.log('第一個計時器回調(diào)執(zhí)行,開啟第二個');

    //     setTimeout(function() {
    //         console.log('第二個計時器回調(diào)執(zhí)行,開啟第三個');

    //         setTimeout(function() {
    //             console.log('第三個計時器回調(diào)執(zhí)行');

    //         }, 2000);
    //     }, 2000);
    // }, 2000);

    /*---------------------------------------------------------------------------------------*/ 
    let p = new Promise(function(yes, no) {
        setTimeout(() => {
            yes();
        }, 2000);
    });

    // 上一個定時器執(zhí)行完畢后, 開啟下一個定時器
    p.then(function() { 
        console.log('第一個計時器回調(diào)執(zhí)行,開啟第二個');

        // 為了可以在外面調(diào)用該實例的then方法,只要return出去就可以了
        return new Promise(function(yes, no) {
            setTimeout(() => {
                yes();
            }, 2000);
        });

    })

    // 如果then回調(diào)中返回的是promise實例,那么我們就可以鏈?zhǔn)骄幊痰玫剿?    .then(function() {
        console.log('第二個計時器回調(diào)執(zhí)行,開啟第三個');

        // 為了可以在外面調(diào)用該實例的then方法,只要return出去就可以了
        return new Promise(function(yes, no) {
            setTimeout(() => {
                yes();
            }, 2000);
        });
    })

    .then(function() {
        console.log('第三個計時器回調(diào)執(zhí)行, 完畢');
    });

    </script>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容