es6(回調地獄)

如果有多個異步操作,就存在一個流程控制的問題:確定操作執行的順序,以后如何保證遵守這種順序。

比如

function async(arg, callback) {
  callback(arg * 2);
}
function final(value) {
  console.log('完成: ', value);
}

問題:如何借助async()得到128?

  • 回調函數嵌套
async(1,function(data)
        { 
            async(data,function(data)
            {
                async(data,function(data)
                {
                    async(data,function(data)
                    {
                        async(data,function(data)
                        {
                            async(data,function(data)
                            {
                                async(data,function(data)
                                {
                                    final(data)
                                })
                            })
                        })
                    })
                })
            })
        })//完成:  128
  • 用promise優化上述代碼
let async=(data)=>new Promise((resolve,reject)=>{           
                return resolve(data*2)
            })

        let final=value=>{
            console.log('完成: ', value);
        }
        async(1)
        .then(async)
        .then(async)
        .then(async)
        .then(async)
        .then(async)
        .then(async)
        .then(final);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 異步編程對JavaScript語言太重要。Javascript語言的執行環境是“單線程”的,如果沒有異步編程,根本...
    呼呼哥閱讀 7,334評論 5 22
  • Promise的含義: ??Promise是異步編程的一種解決方案,比傳統的解決方案——回調函數和事件——更合理和...
    呼呼哥閱讀 2,189評論 0 16
  • 你不知道JS:異步 第三章:Promises 接上篇3-1 錯誤處理(Error Handling) 在異步編程中...
    purple_force閱讀 1,426評論 0 2
  • 弄懂js異步 講異步之前,我們必須掌握一個基礎知識-event-loop。 我們知道JavaScript的一大特點...
    DCbryant閱讀 2,750評論 0 5
  • 當 廚房鍋里冒出來的熱氣 在玻璃上 形成一層 薄薄的氣障的時候 我知道 大概天氣 已經 在不知不覺中 變涼了 就像...
    異質刺猬閱讀 175評論 0 0