精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

盤點JavaScript中Async/Await知識

開發(fā) 前端
Async/await 是以更舒適的方式使用 promise 的一種特殊語法,同時它也非常易于理解和使用。

[[412197]]

大家好,我是進(jìn)階學(xué)習(xí)者。

一、前言

Async/await 是以更舒適的方式使用 promise 的一種特殊語法,同時它也非常易于理解和使用。

二、Async function

讓以 async 這個關(guān)鍵字開始。它可以被放置在一個函數(shù)前面。

如下所示:

  1. async function f() { 
  2.   return 1; 

在函數(shù)前面的 “async” 這個單詞表達(dá)了一個簡單的事情:即這個函數(shù)總是返回一個 promise。其他值將自動被包裝在一個 resolved 的 promise 中。

例如,下面這個函數(shù)返回一個結(jié)果為 1 的 resolved promise。

讓測試一下:

  1. async function f() { 
  2.   return 1; 
  3. f().then(alert); // 1 

也可以顯式地返回一個 promise,結(jié)果是一樣的:

  1. async function f() { 
  2.   return Promise.resolve(1); 
  3. f().then(alert); // 1 

注:

async 確保了函數(shù)返回一個 promise,也會將非 promise 的值包裝進(jìn)去。很簡單,對吧?但不僅僅這些。還有另外一個叫 await 的關(guān)鍵詞,它只在 async 函數(shù)內(nèi)工作,也非常酷。

三、Await

1. 語法

  1. // 只在 async 函數(shù)內(nèi)工作 
  2. let value = await promise; 

關(guān)鍵字 await 讓 JavaScript 引擎等待直到 promise 完成(settle)并返回結(jié)果。

這里的例就是一個 1 秒后 resolve 的 promise:

  1. async function f() { 
  2.   let promise = new Promise((resolve, reject) => { 
  3.     setTimeout(() => resolve("done!"), 1000) 
  4.   }); 
  5.   let result = await promise; // 等待,直到 promise resolve (*) 
  6.   alert(result); // "done!" 
  7. f(); 

代碼解析:

這個函數(shù)在執(zhí)行的時候,“暫停”在了 (*) 那一行,并在 promise settle 時,拿到 result 作為結(jié)果繼續(xù)往下執(zhí)行。所以上面這段代碼在一秒后顯示 “done!”。

await 字面的意思就是讓 JavaScript 引擎等待直到 promise settle,然后以 promise 的結(jié)果繼續(xù)執(zhí)行。這個行為不會耗費任何 CPU 資源,因為引擎可以同時處理其他任務(wù):執(zhí)行其他腳本,處理事件等。

相比于 promise.then,它只是獲取 promise 的結(jié)果的一個更優(yōu)雅的語法,同時也更易于讀寫。

不能在普通函數(shù)中使用 await。

如果嘗試在非 async 函數(shù)中使用 await 的話,就會報語法錯誤:

  1. function f() { 
  2.   let promise = Promise.resolve(1); 
  3.   let result = await promise; // Syntax error 

如果函數(shù)前面沒有 async 關(guān)鍵字,就會得到一個語法錯誤。就像前面說的,await 只在 async 函數(shù) 中有效。

showAvatar() 例子,并將其改寫成 async/await 的形式:

需要用 await 替換掉 .then 的調(diào)用。

另外,需要在函數(shù)前面加上 async 關(guān)鍵字,以使它們能工作。

  1. async function showAvatar() { 
  2.   // 讀取的 JSON 
  3.   let response = await fetch('/article/promise-chaining/user.json'); 
  4.   let user = await response.json(); 
  5.   // 讀取 github 用戶信息 
  6.   let githubResponse = await fetch(`https://api.github.com/users/${user.name}`); 
  7.   let githubUser = await githubResponse.json(); 
  8.   // 顯示頭像 
  9.   let img = document.createElement('img'); 
  10.   img.src = githubUser.avatar_url; 
  11.   img.className = "promise-avatar-example"
  12.   document.body.append(img); 
  13.   // 等待 3 秒 
  14.   await new Promise((resolve, reject) => setTimeout(resolve, 3000)); 
  15.   img.remove(); 
  16.   return githubUser; 
  17. showAvatar(); 

簡潔明了,是吧?比之前可強(qiáng)多了。await 不能在頂層代碼運(yùn)行。

這有一個用于演示的 Thenable 類

下面的 await 接受了該類的例子:

  1. class Thenable { 
  2.   constructor(num) { 
  3.     this.num = num; 
  4.   } 
  5.   then(resolve, reject) { 
  6.     alert(resolve); 
  7.     // 1000ms 后使用 this.num*2 進(jìn)行 resolve 
  8.     setTimeout(() => resolve(this.num * 2), 1000); // (*) 
  9.   } 
  10. }; 
  11. async function f() { 
  12.   // 等待 1 秒,之后 result 變?yōu)?nbsp;2 
  13.   let result = await new Thenable(1); 
  14.   alert(result); 
  15. f(); 

運(yùn)行結(jié)果:

注:

如果 await 接收了一個非 promise 的但是提供了 .then 方法的對象,它就會調(diào)用這個 .then 方法,并將內(nèi)建的函數(shù) resolve 和 reject 作為參數(shù)傳入(就像它對待一個常規(guī)的 Promise executor 時一樣)。

然后 await 等待直到這兩個函數(shù)中的某個被調(diào)用(在上面這個例子中發(fā)生在 (*) 行),然后使用得到的結(jié)果繼續(xù)執(zhí)行后續(xù)任務(wù)。

2. Class 中的 async 方法

要聲明一個 class 中的 async 方法,只需在對應(yīng)方法前面加上 async 即可:

  1. class Waiter { 
  2.   async wait() { 
  3.     return await Promise.resolve(1); 
  4.   } 
  5. new Waiter() 
  6.   .wait() 
  7.   .then(alert); // 1 

運(yùn)行結(jié)果:

注:

它確保了方法的返回值是一個 promise 并且可以在方法中使用 await。

四、總結(jié)

本文基于JavaScript基礎(chǔ),介紹了async的使用。函數(shù)前面的關(guān)鍵字 async 有兩個作用:讓這個函數(shù)總是返回一個 promise。允許在該函數(shù)內(nèi)使用 await。

這兩個關(guān)鍵字一起提供了一個很好的用來編寫異步代碼的框架,這種代碼易于閱讀也易于編寫。通過案例的分分析,圖文結(jié)合的方式,進(jìn)行詳細(xì)的講解,使用JavaScript語言,能夠讓讀者更好的理解。 

代碼很簡單,希望能夠幫助你更好的學(xué)習(xí)。

 

責(zé)任編輯:武曉燕 來源: 前端進(jìn)階學(xué)習(xí)交流
相關(guān)推薦

2016-11-22 11:08:34

asyncjavascript

2021-06-07 09:44:10

JavaScript開發(fā)代碼

2021-06-28 08:10:59

JavaScript異步編程

2024-09-02 14:12:56

2022-11-21 09:01:00

Swift并發(fā)結(jié)構(gòu)

2014-07-15 10:31:07

asyncawait

2021-08-30 10:25:48

JavaScript進(jìn)階操作前端

2021-08-26 10:25:04

JavaScript進(jìn)階操作 前端

2023-10-08 10:21:11

JavaScriptAsync

2012-07-22 15:59:42

Silverlight

2022-08-27 13:49:36

ES7promiseresolve

2021-06-28 07:27:43

AwaitAsync語法

2023-07-28 07:31:52

JavaScriptasyncawait

2024-12-30 08:22:35

2017-06-19 09:12:08

JavaScriptPromiseAsync

2024-12-23 08:00:45

2022-06-13 07:36:47

useEffectHooks

2021-06-15 05:36:45

Gulpawaitasync

2017-02-20 23:05:14

JavaScript

2017-04-10 15:57:10

AsyncAwaitPromise
點贊
收藏

51CTO技術(shù)棧公眾號

成人av在线播放| 91社区在线| 另类亚洲自拍| 色yeye香蕉凹凸一区二区av| 国产大片一区二区三区| 日本在线观看大片免费视频| 91在线国产福利| 国产情人节一区| 久久精品人妻一区二区三区| 国产调教一区二区三区| 7777精品久久久大香线蕉| 青青草精品视频在线| 国产精品四虎| 成人丝袜视频网| 国产日韩欧美综合| 好看的av在线| 欧美1区2区视频| 亚洲人成网站免费播放| 波多野结衣中文字幕在线播放| 中文字幕乱码在线播放| 一区二区激情视频| 亚洲国产精品一区在线观看不卡 | 欧美私模裸体表演在线观看| 无码日本精品xxxxxxxxx| porn视频在线观看| 99免费精品视频| 亚洲自拍在线观看| 中文字幕福利视频| 亚洲一区二区毛片| 欧美高清视频在线播放| 天堂网av2018| 久久不见久久见中文字幕免费 | 午夜视频一区二区三区| 中文字幕欧美日韩一区二区三区| 三区在线观看| 99久久婷婷国产综合精品| 亚洲sss综合天堂久久| 奴色虐av一区二区三区| 一区二区三区福利| 久久乐国产精品| 美女的奶胸大爽爽大片| 婷婷综合伊人| 色妞色视频一区二区三区四区| 波多野结衣 在线| 久久久亚洲欧洲日产| 欧美成人精品二区三区99精品| 国产5g成人5g天天爽| 国产精品亲子伦av一区二区三区| 色婷婷综合在线| 成人免费观看视频在线观看| 九九色在线视频| 亚洲嫩草精品久久| 色一情一乱一乱一区91| 蜜桃av在线免费观看| 中文字幕在线不卡国产视频| 亚洲激情图片| 在线免费观看黄| 国产精品久久福利| 正在播放91九色| 蜜桃视频在线观看www社区| 中文字幕亚洲电影| 五月天色婷婷综合| 在线观看三级视频| 亚洲一区二区综合| 9久久9毛片又大又硬又粗| 国产不卡人人| 日本韩国欧美一区| 色综合天天色综合| 精品中文视频| 精品国产伦理网| 一级国产黄色片| 国产videos久久| 中文字幕亚洲欧美日韩2019| 四虎永久免费在线| 极品少妇一区二区三区| 欧美在线视频在线播放完整版免费观看| 久热这里只有精品6| 久久精品日产第一区二区 | 国产精品久久久久久久乖乖| 国产传媒在线观看| 欧美三级欧美一级| 一区二区久久精品| 国产精品极品国产中出| 亚洲美女喷白浆| 久久爱一区二区| 亚洲婷婷在线| 国产福利精品av综合导导航| 国产乱码精品一区二三区蜜臂| 国产成人精品1024| 欧美日韩在线观看一区二区三区| 91精彩视频在线观看| 亚洲日本在线观看| 黄色网页免费在线观看| 欧美成人福利| 亚洲国产成人精品久久久国产成人一区 | 神马影院午夜我不卡| а天堂中文在线官网| 精品国产乱码久久久久久婷婷| 欧美自拍小视频| 综合激情久久| 亚洲一区二区久久| 精品少妇久久久久久888优播| 先锋影音国产一区| 亚洲综合中文字幕68页| 国产视频第一页在线观看| 亚洲激情欧美激情| 亚洲中文字幕久久精品无码喷水| 欧美久久一区二区三区| 亚洲深夜福利在线| 九九视频在线观看| 奇米777欧美一区二区| 国产麻豆日韩| 超碰人人在线| 在线视频国内自拍亚洲视频| 黄色激情在线观看| 91成人影院| 国产精品电影一区| 少妇人妻精品一区二区三区| 亚洲啪啪综合av一区二区三区| av动漫在线观看| 亚洲无线观看| 久久精品国产91精品亚洲| 久久久黄色大片| 成人精品在线视频观看| 桥本有菜av在线| 日本成人福利| 亚洲色图校园春色| 国产精品美女久久久久av爽| 国产精品77777| 亚洲欧洲一区二区福利| 欧美电影免费观看高清完整| 亚洲国产精品yw在线观看| 青青操国产视频| 激情五月婷婷综合网| 神马影院一区二区| 成人开心激情| 尤物九九久久国产精品的分类| 一区二区三区福利视频| 粉嫩aⅴ一区二区三区四区| 黄色免费高清视频| 偷拍自拍亚洲| 日韩在线高清视频| 91高潮大合集爽到抽搐| 国产精品麻豆欧美日韩ww| 免费观看成人在线视频| 欧洲激情综合| 国产精品视频精品| 最新电影电视剧在线观看免费观看| 日本久久精品电影| 午夜在线观看一区| 日韩电影在线免费| 亚洲高清视频一区| 日本一区二区三区中文字幕| 中文字幕在线观看亚洲| 在线播放亚洲精品| 中文字幕一区视频| 毛片毛片毛片毛片毛| 欧美日本一区| 国产精品xxxx| 亚洲天堂电影| 在线日韩av观看| 一级aaaa毛片| 亚洲精品国产一区二区精华液| 亚洲欧洲日韩综合| 亚洲国产精品一区| 免费日韩av电影| 99久久er| 欧美日韩国产999| 秋霞网一区二区| 日韩欧美国产中文字幕| 精品成人无码一区二区三区| 美女www一区二区| 中国一级黄色录像| 国产美女撒尿一区二区| 日韩美女视频在线观看| 91精品国产综合久久久久久豆腐| 制服丝袜日韩国产| 国产真人真事毛片| 国产色91在线| 69久久精品无码一区二区 | 久久久久免费视频| 日韩偷拍自拍| 欧美精品乱码久久久久久按摩| 免费在线观看国产精品| 91免费精品国自产拍在线不卡| 天天爽人人爽夜夜爽| 欧美性色综合| 色一情一乱一伦一区二区三区丨 | 久久av一区二区三区亚洲| 日本欧美韩国| 欧美黄色片免费观看| 国产一级在线观看| 日韩美女天天操| 无码人妻黑人中文字幕| 亚洲另类在线视频| 蜜桃精品成人影片| 激情综合网激情| 免费在线观看毛片网站| 中文字幕免费精品| 欧美一级日本a级v片| 麻豆国产一区二区三区四区| 91av视频在线免费观看| 久cao在线| 国产一区二区黑人欧美xxxx| 午夜精品在线播放| 欧美私人免费视频| 国产又黄又爽又色| 亚洲激情欧美激情| 日韩av片在线免费观看| 26uuu久久天堂性欧美| 最好看的中文字幕| 免费观看一级特黄欧美大片| 精品国产一区三区| 欧美激情1区| 一本久道久久综合狠狠爱亚洲精品| 精品亚洲免a| 99精彩视频| av国产精品| 国产精品久久视频| 中文av在线全新| 国产69精品久久久久9| 福利视频在线| 日韩在线视频国产| 国产69精品久久app免费版| 日韩高清中文字幕| 日韩中文字幕免费观看| 日韩一级片网站| 国产又色又爽又黄又免费| 欧洲人成人精品| 四虎成人在线观看| 欧美午夜性色大片在线观看| 国产午夜福利精品| 亚洲一区二区四区蜜桃| 国产成人久久久久| 亚洲欧美日韩国产另类专区| 人妻无码一区二区三区免费| 国产性色一区二区| 91精品人妻一区二区| 97精品超碰一区二区三区| 国产免费一区二区三区最新6| 高清日韩电视剧大全免费| 女人扒开腿免费视频app| 国产精品香蕉一区二区三区| 天天久久综合网| 国产一区二区三区av电影| 色综合五月婷婷| 国产麻豆欧美日韩一区| 欧美视频国产视频| 国产九色精品成人porny| www.日本久久| 国产精品1024| 97中文字幕在线观看| 丁香网亚洲国际| www国产视频| 91小视频在线免费看| 久久久久亚洲av无码专区桃色| 久久色.com| 国产小视频自拍| 国产精品免费网站在线观看| 99热在线观看精品| 亚洲美女屁股眼交| 国产亚洲精品久久777777| 午夜视频在线观看一区二区三区| 久久久精品福利| 欧美在线一二三四区| 97超视频在线观看| 欧美mv日韩mv亚洲| 完全免费av在线播放| 久久久一二三四| 国产主播精品| 国产xxxxx在线观看| 蜜桃在线一区二区三区| 奇米777在线视频| 不卡电影免费在线播放一区| 日本黄色特级片| 亚洲婷婷在线视频| www.av视频在线观看| 色婷婷激情综合| 国产一区二区三区在线观看| 亚洲成人黄色在线| 国产精品秘入口| 久久国产精品偷| 自拍在线观看| 91精品久久久久久久久久| av成人app永久免费| 欧美午夜精品久久久久免费视| 91一区二区三区四区| 精品少妇人妻av免费久久洗澡| 日韩激情视频网站| 国产性猛交96| 中文字幕欧美三区| 日韩黄色a级片| 51午夜精品国产| 视频二区在线| 欧美美最猛性xxxxxx| 欧美momandson| 成人看片在线| 欧美一级精品| 免费一级特黄特色毛片久久看| 老司机精品视频在线| 成人性生活免费看| 亚洲精品综合在线| 中文字幕观看在线| 亚洲激情中文字幕| 国产鲁鲁视频在线观看特色| 国产成人综合亚洲| 伦理一区二区| 国产高清不卡无码视频| 蜜桃久久av一区| 97超碰在线免费观看| 一区二区三区免费看视频| 亚洲天堂视频在线| 亚洲免费视频在线观看| 久久久久黄久久免费漫画| 91精品久久久久久久久久久久久久 | 国产av自拍一区| 午夜欧美2019年伦理| 99久久久无码国产精品免费| 国产亚洲精品高潮| 不卡一二三区| 国产在线精品二区| 欧美性色综合| 国产精品欧美性爱| 亚洲视频小说图片| 亚洲综合一区中| 国产亚洲一区精品| **欧美日韩在线观看| 欧美精品二区三区四区免费看视频| 精品电影一区| 国产一精品一aⅴ一免费| 亚洲乱码日产精品bd| 国产精品爽爽久久久久久| 综合国产在线视频| 欧美aaa视频| 日本一区二区三区视频在线播放| 国产亚洲毛片在线| 亚洲午夜久久久久久久久红桃| 午夜视频久久久久久| 免费观看毛片网站| 高清欧美一区二区三区| 51vv免费精品视频一区二区| 欧美一区二区视频在线播放| 成人一区二区在线观看| 久久中文字幕在线观看| 日韩欧美色电影| 激情网站在线| 国产综合18久久久久久| av成人天堂| 插吧插吧综合网| 欧美色男人天堂| 国内精品久久久久久野外| 亚洲在线观看视频网站| 国内精品美女在线观看| 高清中文字幕mv的电影| 狠狠做深爱婷婷久久综合一区| 日本在线丨区| 国产精品成熟老女人| 久久高清免费| 欧美xxxxxbbbbb| 午夜精品福利一区二区三区av | 精品国产一区二区三区四区在线观看 | 国产一区二区三区成人欧美日韩在线观看 | 国产69精品久久久久按摩| 制服国产精品| 大陆成人av片| 日韩精品一区二区亚洲av| 一本色道久久88综合日韩精品 | 国产福利久久| 香蕉视频成人在线观看| 韩国女同性做爰三级| 欧美日韩成人一区二区| 男男gaygays亚洲| 久久精品五月婷婷| 久久精品99久久久| 欧美日韩精品在线观看视频 | 今天的高清视频免费播放成人| 黑丝av在线播放| 欧美三级中文字幕| 四虎亚洲成人| 久久久久综合一区二区三区| 日本中文在线一区| 中文字幕av免费在线观看| 国产婷婷成人久久av免费高清| 久久久久久久性潮| www..com日韩| 国产女人水真多18毛片18精品视频| 国产jzjzjz丝袜老师水多| 51精品在线观看| 亚洲二区三区不卡| 午夜久久久久久久| 欧美精品色一区二区三区| 美女高潮视频在线看| 曰韩不卡视频| 91在线观看一区二区| 99久久婷婷国产一区二区三区| 7m精品福利视频导航| 亚洲一区在线| 人人人妻人人澡人人爽欧美一区| 日韩一区二区三区四区| 国产精品毛片久久久久久久久久99999999 |