摘要:在異步編程中,提供了對象的方式。例如等同于所以可以理解為生成一個實例。那么自然也可以去調用則是配合使用的。等于是等待一個返回值,等待的執行結果。但是函數不會造成阻塞,所以配合使用,則沒有影響到外部。
在異步編程中,es6提供了promise對象的方式。
簡單的用法
var promise = new Promise((resolve,reject)=>{ if(){ resolve(res) }else{ reject(res) } }) promise.the((res)=>{}).catch((res)=>{})
而async 實則是返回了一個promise對象
async function test(){ console.log("123"); } var restult = test(); console.log(result);//=>>Promise{"123"}; //如果函數return 一個直接量,那么就等于直接去調用Promise.resolve()方法 //Promise.resolve方法也就是生成一個Promise實例,并且其直接調用resolve。 //例如 Promise.resolve("test"); //等同于 new Promise((resolve,reject)=>resolve("test")); //所以async可以理解為生成一個promise實例。 //那么自然也可以去調用.then() test.then((res)=>{})
await則是配合async使用的。await等于是等待一個返回值,等待async的執行結果。
async function testAsync() { return Promise.resolve("hello async"); } async function test() { const res = await testAsync(); console.log(res); } test();
輸出結果就是"hello async".
await必須配合async使用,但是await的對象可以不是Promise對象,一個普通的函數也可以使用。
如果它等到的不是一個 Promise 對象,那 await 表達式的運算結果就是它等到的東西。
如果它等到的是一個 Promise 對象,await 就忙起來了,它會阻塞后面的代碼,等著 Promise 對象 resolve,然后得到 resolve 的值,作為 await 表達式的運算結果。但是async函數不會造成阻塞,所以await配合async使用,則沒有影響到外部。
async和await的作用
可以把promise 的then寫得簡潔,便于理解
流程就是生成一個async函數,然后函數內部去await一個promise對象得運行結果,再用這個結果去調用其它得Promise對象,如此得話then((res)=>{}).then((ress)=>{})。就可以寫成
var res = await foo(); var ress = await fob(res); var resss = await foc(ress)
在then鏈復雜得情況下,promise得參數傳遞非常復雜,但使用async+await得方式,就如同同步編程一般,非常清晰和流暢。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/107893.html
摘要:對空數組是不會執行回調函數的。就算改變已經發生了,你再對對象添加回調函數,也會立即得到這個結果。用來表示函數是異步的,定義的函數會返回一個對象,可以使用方法添加回調函數。 介紹 通過Array/Object/Function基礎類型編寫。 看到自己不了解的或者比較新穎的用法便會寫上。 不定時更新內容。 本文首發于我的個人網站: Timbok.top 目錄 Array 迭代方法 ...
摘要:版本以及之前,本身還沒有異步執行代碼的能力,宿主環境傳遞給引擎,然后按順序執行,由宿主發起任務。采納引擎術語,把宿主發起的任務稱為宏觀任務,把引擎發起的任務稱為微觀任務。基本用法示例的回調是一個異步的執行過程。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的...
摘要:版本以及之前,本身還沒有異步執行代碼的能力,宿主環境傳遞給引擎,然后按順序執行,由宿主發起任務。采納引擎術語,把宿主發起的任務稱為宏觀任務,把引擎發起的任務稱為微觀任務。基本用法示例的回調是一個異步的執行過程。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的...
摘要:版本以及之前,本身還沒有異步執行代碼的能力,宿主環境傳遞給引擎,然后按順序執行,由宿主發起任務。采納引擎術語,把宿主發起的任務稱為宏觀任務,把引擎發起的任務稱為微觀任務。基本用法示例的回調是一個異步的執行過程。 筆記說明 重學前端是程劭非(winter)【前手機淘寶前端負責人】在極客時間開的一個專欄,每天10分鐘,重構你的前端知識體系,筆者主要整理學習過程的一些要點筆記以及感悟,完整的...
閱讀 1455·2021-09-10 11:27
閱讀 2410·2019-08-30 15:53
閱讀 1322·2019-08-30 13:10
閱讀 2974·2019-08-30 11:09
閱讀 1084·2019-08-29 17:23
閱讀 668·2019-08-29 17:05
閱讀 2949·2019-08-29 15:10
閱讀 2346·2019-08-29 13:22