await前端小白初識

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關鍵詞只能在async函數中用

await操做符等的是一個返回的結果,那麼若是是同步的狀況,那就直接返回了。
那若是是異步的狀況呢,異步的狀況下,await會阻塞整一個流程,直到結果返回以後,纔會繼續下面的代碼。
阻塞代碼是一個很可怕的事情,而async函數,會被包在一個promise中,異步去執行。因此await只能在async函數中使用,若是在正常程序中使用,會形成整個程序阻塞,得不償失。異步

相關文章
相關標籤/搜索