欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于JavaScript中異步/等待的用法與理解

 更新時間:2020年11月18日 09:37:18   作者:標梵互動  
這篇文章主要給大家介紹了關(guān)于JavaScript中異步/等待的用法與理解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

昨天更新的是“JavaScript中的Promise使用詳解”,其實也就是說了下基本用法和自己對Promise的理解,可能有錯誤之處,也歡迎指出。今天就說一說“JavaScript中的async/await的用法和理解”

JavaScript中異步/等待的用法和理解

編程語言中任意一個關(guān)鍵字都是有意義的,我們先從字面意思來理解。

1.async

async 是“異步”的簡寫,帶async關(guān)鍵字的函數(shù),是聲明異步函數(shù),返回值是promise對象,如果async關(guān)鍵字函數(shù)返回的不是promise,會自動用Promise.resolve()包裝。

async function test() {
 return 'hello word'
}
test();

運行上面代碼返回結(jié)果如下

2.await

await 可以認為是 async wait 的簡寫。所以應(yīng)該很好理解 async 用于申明一個 function 是異步的,而 await 用于等待一個異步方法執(zhí)行完成。

如果它等到的不是一個 Promise 對象,那 await 表達式的運算結(jié)果就是它等到的東西。

如果它等到的是一個 Promise 對象,await 就忙起來了,它會阻塞后面的代碼,等著 Promise 對象 resolve,然后得到 resolve 的值,作為 await 表達式的運算結(jié)果。

我們看下面段代碼

function test() {
 return new Promise(resolve => {
  setTimeout(() => resolve("hello word"), 2000);
 });
}

const result = test();
console.log(result.then((val)=>{console.log(val)}));
console.log('結(jié)束')

我們以編輯器編輯器代碼執(zhí)行順序來理下,

1.首先我們定義一個方法,這個方法返回Promise 對象,.then()函數(shù)兩秒鐘后返回調(diào)用成功。

2.接下來實例化test()函數(shù)。

3.調(diào)用result對象的then()函數(shù),接收返回值,注意,這里是異步的

4.打印日志結(jié)束

我們運行代碼,看結(jié)果

看到先打印“結(jié)束”,然后才打印的“hello word”,這就是異步,我們改造下代碼

function test() {
 return new Promise(resolve => {
  setTimeout(() => resolve("hello word"), 2000);
 });
}

const result = await test();
console.log(result);
console.log('結(jié)束')

用await關(guān)鍵字接test()函數(shù),看這次返回結(jié)果

我們發(fā)現(xiàn)先打印“hello word”,然后才打印“結(jié)束”,由于test()造成的阻塞,console.log(‘結(jié)束')會等到兩秒后執(zhí)行。

再來說下優(yōu)缺點

優(yōu)點:相對于promise,async/await處理 then 的調(diào)用鏈,代碼要清晰很多,幾乎和同步代碼一樣。

缺點:濫用 await 可能會導(dǎo)致性能問題,因為 await 會阻塞代碼。

總結(jié)

到此這篇關(guān)于JavaScript中異步/等待的用法與理解的文章就介紹到這了,更多相關(guān)JavaScript異步/等待的用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:

相關(guān)文章

  • 淺談bootstrap使用中的一些問題以及解決過程

    淺談bootstrap使用中的一些問題以及解決過程

    下面小編就為大家?guī)硪黄獪\談bootstrap使用中的一些問題以及解決過程。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • 用JavaScript事件串連執(zhí)行多個處理過程的方法

    用JavaScript事件串連執(zhí)行多個處理過程的方法

    用JavaScript事件串連執(zhí)行多個處理過程的方法...
    2007-03-03
  • iframe一次下載多個文件實例

    iframe一次下載多個文件實例

    這篇文章主要為大家介紹了iframe一次下載多個文件實現(xiàn)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-01-01
  • JavaScript實現(xiàn)淺拷貝與深拷貝的方法分析

    JavaScript實現(xiàn)淺拷貝與深拷貝的方法分析

    這篇文章主要介紹了JavaScript實現(xiàn)淺拷貝與深拷貝的方法,結(jié)合實例形式總結(jié)分析了JavaScript淺拷貝與深拷貝的定義與使用方法,需要的朋友可以參考下
    2018-07-07
  • 收集前端面試題之url、href、src

    收集前端面試題之url、href、src

    本文給大家分享小編日常收集整理的關(guān)于前端面試題之url、href、src的語法規(guī)則及基本概念,非常不錯,具有參考借鑒價值,需要的朋友參考下吧
    2018-03-03
  • 基于JS實現(xiàn)省市聯(lián)動效果代碼分享

    基于JS實現(xiàn)省市聯(lián)動效果代碼分享

    這篇文章主要介紹了基于JS實現(xiàn)省市聯(lián)動效果代碼的相關(guān)資料,非常實用,在日常項目開發(fā)過程中經(jīng)常遇到此需求,下面小編給大家分享實現(xiàn)代碼,需要的朋友可以參考下
    2016-06-06
  • javascript設(shè)計模式之module(模塊)模式

    javascript設(shè)計模式之module(模塊)模式

    這篇文章主要為大家詳細介紹了javascript設(shè)計模式之module(模塊)模式 ,感興趣的小伙伴們可以參考一下
    2016-08-08
  • JS數(shù)字千分位格式化實現(xiàn)方法總結(jié)

    JS數(shù)字千分位格式化實現(xiàn)方法總結(jié)

    這篇文章主要介紹了JS數(shù)字千分位格式化實現(xiàn)方法,結(jié)合實例形式總結(jié)分析了JS實現(xiàn)數(shù)字千分位格式化的常用技巧,包括字符串的分割、拼接、遍歷及正則操作等相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2016-12-12
  • 純JS代碼實現(xiàn)一鍵分享功能

    純JS代碼實現(xiàn)一鍵分享功能

    在qq空間,新浪微博,人人網(wǎng)等網(wǎng)絡(luò)平臺大家經(jīng)??梢钥吹揭绘I分享功能,那么基于js代碼是如何實現(xiàn)一鍵分享的呢?下面腳本之家小編給大家介紹js實現(xiàn)一鍵分享功能的代碼,需要的朋友參考下吧
    2016-04-04
  • JS寫滑稽笑臉運動效果

    JS寫滑稽笑臉運動效果

    這篇文章主要介紹了JS寫滑稽笑臉運動效果,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05

最新評論