国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

js異步編程-async,await以及不可以取代的Promise

JinB / 2027人閱讀

摘要:帶來了和,讓的異步編程更加方便。但是他們是取代不了的。其中狀態(tài)是這種情況下,看出狀態(tài)是。并報(bào)錯(cuò),不想報(bào)錯(cuò)紅錯(cuò),可以使用將報(bào)錯(cuò)信息到。,簡介是用來表示函數(shù)是異步的,出現(xiàn),會(huì)返回一個(gè)對象,就可以使用方法,方便的添加回調(diào)函數(shù)了。

ES7帶來了async和await,讓js的異步編程更加方便。

async和await的簡單語法實(shí)驗(yàn)

async和await是Promise的語法糖,讓書寫更加方便。但是他們是取代不了Promise的。他們是建立在promise機(jī)制上的。
簡單語法試驗(yàn):
(1)
正常情況下,可以看出也打印出來一個(gè)Promise。其中Promise狀態(tài)是‘resolved’;

(2)
這種情況下,看出Promise狀態(tài)是"rejected"。并報(bào)錯(cuò),不想報(bào)錯(cuò)“紅錯(cuò)”,可以使用try...catch

(3)
將報(bào)錯(cuò)信息catch到。

async,await簡介

async
async是用來表示函數(shù)是異步的,出現(xiàn)async,會(huì)返回一個(gè)Promise對象,就可以使用then方法,方便的添加回調(diào)函數(shù)了。是語法更加簡潔。

await
必須出現(xiàn)在async中,不可多帶帶使用;
await后面可以跟任何js表達(dá)式,也就是awati可以等很多類型的東西,但主要是等Promise對象被狀態(tài)被resolved。

小示例

注意:reject("123"),需要try,catch才能將信息拿出來。
例子:
(1)resolve正常情況下可以拿出。

(2)reject拿不出

(3)reject需要用try,catch獲取信息

不要將并發(fā)請求發(fā)成了阻塞式同步

如:

function aa(second){

return new Promise((resolve,reject) => {
    setTimeout(() => {
        resolve("request done"+Math.random());
    },second);
})

}

async function bugDemo(){

await aa(1000);
await aa(1000);
await aa(1000);
console.log("clear the loading~");

}

bugDemo();

不阻塞的寫法
function aa(second){

return new Promise((resolve,reject) => {
    setTimeout(() => {
       console.log("request done"+Math.random());
    },second);
})

}
async function bugDemo(){

let a =aa(1000);
let b =aa(1000);
let c =aa(1000);
await Promise.all([a,b,c])
console.log("clear the loading~");

}
bugDemo();

注意:await只能在async函數(shù)的上下文中。
async function forDemo(){

   let arr = [1,2,3,4,5];
   for(let i=0;i

await arr[i];
}
}
這個(gè)是正常的,不會(huì)報(bào)錯(cuò)。

async function forBugDemo(){
let arr = [1,2,3,4,5];
arr.forEach(item => {
await item;
});
}
這個(gè)會(huì)報(bào)錯(cuò)

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/108294.html

相關(guān)文章

  • JS 異步(callback→Promiseasync/await)

    摘要:異步編程三座大山原型原型鏈作用域閉包同步異步。異步操作執(zhí)行完畢后,再執(zhí)行該回調(diào)函數(shù),確保回調(diào)在異步操作之后執(zhí)行。回調(diào)函數(shù)本身是我們約定俗成的一種叫法,我們定義它,但是并不會(huì)自己去執(zhí)行它,它最終被其他人執(zhí)行了。 JS異步編程 JS三座大山:原型原型鏈、作用域閉包、同步異步。之前有寫過自己對閉包的理解,今天來總結(jié)一下JS中的異步。 思考(案例來自stackoverflow): functi...

    gougoujiang 評論0 收藏0
  • ES6系列文章 異步神器async-await

    摘要:有兩個(gè)陌生的關(guān)鍵字,同時(shí)函數(shù)執(zhí)行結(jié)果似乎返回了一個(gè)對象。用來表示函數(shù)是異步的,定義的函數(shù)會(huì)返回一個(gè)對象,可以使用方法添加回調(diào)函數(shù)。如果的是對象會(huì)造成異步函數(shù)停止執(zhí)行并且等待的解決如果等的是正常的表達(dá)式則立即執(zhí)行。 視頻講解 關(guān)于異步處理,ES5的回調(diào)使我們陷入地獄,ES6的Promise使我們脫離魔障,終于、ES7的async-await帶我們走向光明。今天就來學(xué)習(xí)一下 async-a...

    miqt 評論0 收藏0
  • 以圖表和示例角度解讀async/await

    摘要:在中,表示抽象的非阻塞異步執(zhí)行。在完成之后安排代碼的唯一方式是通過方法綁定回調(diào)函數(shù)。下圖描述了該示例的計(jì)算過程方法中綁定的回調(diào)函數(shù)只有當(dāng)成功的時(shí)候才會(huì)調(diào)用。為了處理失敗的,需要通過綁定另一個(gè)回調(diào)函數(shù)。 介紹 ES7中,async/await 語法使異步promise的協(xié)調(diào)變得很簡單。如果你需要以特定順序異步獲取來自多個(gè)數(shù)據(jù)庫或API的數(shù)據(jù),可以使用雜亂的promise或回調(diào)函數(shù)。asy...

    sutaking 評論0 收藏0
  • ES6 系列之我們來聊聊 Async

    摘要:標(biāo)準(zhǔn)引入了函數(shù),使得異步操作變得更加方便。在異步處理上,函數(shù)就是函數(shù)的語法糖。在實(shí)際項(xiàng)目中,錯(cuò)誤處理邏輯可能會(huì)很復(fù)雜,這會(huì)導(dǎo)致冗余的代碼。的出現(xiàn)使得就可以捕獲同步和異步的錯(cuò)誤。如果有錯(cuò)誤或者不嚴(yán)謹(jǐn)?shù)牡胤剑垊?wù)必給予指正,十分感謝。 async ES2017 標(biāo)準(zhǔn)引入了 async 函數(shù),使得異步操作變得更加方便。 在異步處理上,async 函數(shù)就是 Generator 函數(shù)的語法糖。 ...

    Songlcy 評論0 收藏0
  • [翻譯] Async/Await 使你代碼更簡潔

    摘要:取而代之,利用事件循環(huán)體系,使用了一種類似語法的工作方式一旦非阻塞的異步操作完成之后,就可以讓開發(fā)者分配的回調(diào)函數(shù)被觸發(fā)。第一個(gè)嘗試嵌套的回調(diào)函數(shù)下面是使用嵌套的回調(diào)函數(shù)的實(shí)現(xiàn)方法這可能對于任何使用者來說再熟悉不過了。 寫在文章前 這篇文章翻譯自 ASYNC/AWAIT WILL MAKE YOUR CODE SIMPLER,這是一篇寫于2017年八月的文章,并由某專欄提名為17年十大...

    hightopo 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<