await
關鍵詞await是等待的意思,那麼他在等什麼呢? 在MDN上寫的是:
[return_value] = await expression;
複製代碼
等的是一個表達式,那麼表達式,能夠是一個常量,變量,promise,函數等。express
function getSomething() { return "something"; } async function testAsync() { return Promise.resolve("hello async"); } async function test() { const v1 = await getSomething(); const v2 = await testAsync(); console.log(v1, v2); } test(); // something hello async
複製代碼promise
await操做符等的是一個返回的結果,那麼若是是同步的狀況,那就直接返回了。
那若是是異步的狀況呢,異步的狀況下,await會阻塞整一個流程,直到結果返回以後,纔會繼續下面的代碼。
阻塞代碼是一個很可怕的事情,而async函數,會被包在一個promise中,異步去執行。因此await只能在async函數中使用,若是在正常程序中使用,會形成整個程序阻塞,得不償失。異步