async其實是es7的才有的,是非同步操作的進化,其實就是封裝乙個promise的物件返回
async function test()
console.log(test()) //promise
async方法在普通的函式前加上"async"關鍵字即可。執行這個函式,發現並沒有返回1111,而是通過promise.resolved()將1111封裝成了乙個promise物件返回。既然是返回的promise物件,就可以用then方法來處理。
test().then(res=>)
await
yield關鍵字只能使用在generator函式中,同樣,await關鍵字也不能單獨使用,需要使用在async方法中。 await字面意思是"等待",它是在等待後面表示式的執行結果。
function testwait(), 1000);})}
async function test()
test() // 依次列印出 testwait hello
await的作用,就是阻塞主函式的執行,直到後面的promise函式返回結果。
await後面不單單只能是乙個promise物件,可以是字串,布林值,數值以及普通函式
function testwait(), 1000);
}async function test()
test() // 依次列印出 hello testwait
通過上面的例子 我們可以得知
1、await後面如果是乙個promise物件,await會阻塞主函式的執行,等待 promise 物件 resolve,然後得到 resolve 的值,作為 await 表示式的運算結果,然後繼續執行主函式接下來的**。
2、await後面如果是非promise物件,await等待函式或者直接量的返回,而不是等待其執行結果。
應用場景
乙個完成的煮菜任務 需要按步驟來完成
//洗菜
function prepare(),100)
});
}//炒菜
function fired(),100)
});
}//吃飯
function eat(),100)
});}
async function task()
task(); //依次列印出: 開始準備 洗菜 炒菜 吃飯 完成
async和await的講解
普通的函式宣告 async function a 複製 宣告乙個函式表示式 let a async function 複製 async形式的箭頭函式 let a async 複製 async與await例項應用,基礎 控制器呼叫與server中查詢資料 exports.getbloglist asy...
async和await的講解
async和await的講解 宣告async函式的幾個方法 普通的函式宣告 async function a 宣告乙個函式表示式 let a async function async形式的箭頭函式 let a async 初識async和await async與await例項應用,基礎 控制器呼叫與...
await和async的機制
await 一般會和 async 一起使用,async 是非同步,await則是等待非同步的返回值。可以看下面的測試 public async task string call public async task int foo 執行結果 1 3 4 2這裡在await 後的方法執行完之後,才會向下...