最簡單的async、await異步

async/await異步

Async/Await應該是目前最簡單的異步方案了,ES7 中新增了 async/await 兩個關鍵詞。async 能夠聲明一個異步函數,此函數須要返回一個 Promise 對象。await 能夠等待一個 Promise 對象 resolve,並拿到結果。 一個栗子:異步

先看一下同步狀態下

同步

console.log(1);
        console.log(2);
        setTimeout(function(){
            console.log(3)
        },3000);
        console.log(4);
        console.log(5)

上邊的打印結果你們想必都知道,這是同步狀態下的執行順序async

在看一個例子

function p1(){
            return new Promise(function(resolve,reject){
                setTimeout(function(){
                    console.log("p1_2000");
                    resolve()
                },3000)
            })
        }
 function p2(){
            return new Promise(function(resolve,reject){
                setTimeout(function(){
                    console.log("p2_2000");
                    resolve()
                },2000)
            })
        }
 console.log("start");
 p1();
 p2();
 console.log(end)
 //start 
 //end
 //p2_2000
 //p1_3000

我們想作的是讓他按這個順序執行下來我們就要用到async、await函數

看代碼code

function p1(){
            return new Promise(function(resolve,reject){
                setTimeout(function(){
                    console.log("p1_3000");
                    resolve()
                },3000)
            })
           
        }
        function p2(){
            return new Promise(function(resolve,reject){
                setTimeout(function(){
                    console.log("p2_2000");
                    resolve()
                },2000)
            })
        }
        
        //await 只能出如今異步函數裏
         async function shi(){
            console.log("start")
            await p1();
            await p2();
            console.log("end")
         }
         
         p3=shi();
         p3.then(function(){
             console.log("結束")
         })

上邊函數執行下來就是按照那個順序下來的,你們記住await 只能出如今異步函數裏!配套使用對象

相關文章
相關標籤/搜索