首頁 >web前端 >js教程 >JavaScript中如何使用async和await執行非同步處理

JavaScript中如何使用async和await執行非同步處理

不言
不言原創
2019-01-10 16:47:152519瀏覽

Async/await是一個主要功能,可以更簡潔有效地描述Promise的非同步處理,非同步處理是無需等待處理結果就能馬上執行下一個處理的機制,它可以很容易地透過使用Promise來實現。

JavaScript中如何使用async和await執行非同步處理

在Promise的情況下,我們使用「then」來連接,因此它會變成很單調的程式碼。

例如,如果使用「then」運行多個Promise進程,它看起來像這樣:

getDate()
.then(function(data) {
    return getYear(data)
}) .then(function(year) {
    return getSomething(year)
}) .then(function(item) {
    getAnotherThing(item)
})

在某些情況下,使用Promise.all()可以更好的實現,但仍必須使用then。

我們如果學習如何使用async/await,這樣就可以提高效率了。

如何使用async/await?

我們先來看看基本的語法

async可以定義一個函數,只要在function之前寫入就可以執行非同步處理。

async function() { }

如果這樣寫async,這個函數將會回傳Promise。

此外,await是Promise處理的結果傳回之前暫時停止的運算子。

await Promise处理

透過在描述Promise處理的函數之前簡單地寫await,它會暫停直到結果返回。

但是,請注意await只能用於async中定義的函數!

同樣由於這個原因,async / await經常會成對的使用。

如何使用async/await寫非同步處理?

首先,假設有以下Promise處理。

function myPromise(num) {
  return new Promise(function(resolve) {
 
    setTimeout(function() { resolve(num * num) }, 3000)
 
  })
}

這個例子,明白在Promise內記述著故意花費3秒的時間的處理。

如果使用async/await而不使用then ,則如下所示。

async function myAsync() {
    var result = await myPromise(10);
    console.log(result);
}

執行結果為:100

在這個範例中,透過賦予async來建立非同步處理的函數。

描述函數內的Promise處理是myPromise()前的await

這將暫時等待Promise進程,該進程將在3秒後返回結果,並且一旦獲得結果,函數內的進程將繼續處理。

在執行結果中,可以得到給定參數10相乘的值100。

以上是JavaScript中如何使用async和await執行非同步處理的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn