日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【ES8(2017)】async / await

發布時間:2025/3/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【ES8(2017)】async / await 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

async 和 await 是一種更加優雅的異步編程解決方案,是Promise 的拓展。

在我們處理異步的時候,比起回調函數,Promise的then方法會顯得較為簡潔和清晰,但是在處理多個彼此之間相互依賴的請求的時候,就會顯的有些繁瑣。這時候,用async/await更加優雅。

我們知道 JavaScript 是單線程的,使用 Promise 之后可以讓我們書寫異步操作更加簡單,而 async 是讓我們寫起 Promise 像同步操作。

基本用法

前面添加了async的函數在執行后都會自動返回一個Promise對象:

async function foo() {return 'hello' } console.log(foo()) // Promise 對象

await后面需要跟異步操作,不然就沒有意義,而且await后面的Promise對象不必寫then,因為await的作用之一就是獲取后面Promise對象成功狀態傳遞出來的參數。

function timeout() {return new Promise(resolve => {setTimeout(() => {console.log(1)resolve('success')}, 1000)}) }async function foo() {let res = await timeout()console.log(res)console.log(2) } foo() // 1 success 2

在async函數中使用await,那么await這里的代碼就會變成同步的了,意思就是說只有等await后面的Promise執行完成得到結果才會繼續下去,await就是等待。

應用

按順序讀取a.json、b.json、c.json,使用async/await該如何實現:

function request(url) {return new Promise(resolve => {ajax(url, res => {resolve(res)})}) } async function getData() {let res1 = await request('static/a.json')console.log(res1)let res2 = await request('static/b.json')console.log(res2)let res3 = await request('static/c.json')console.log(res3) } getData()

await 只能在 async 標記的函數內部使用,單獨使用會觸發 Syntax error。

總結

以上是生活随笔為你收集整理的【ES8(2017)】async / await的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。