V8 8.5 帶來的三個(gè)實(shí)用新特性!
Promise.any
Promise 新增了一個(gè) any 方法,它接收一個(gè) Promise 數(shù)組,當(dāng)數(shù)組中某一個(gè) Promise 為 fulfilled 后,它返回的 Promise 就會(huì)被返回。
const?promises?=?[
??fetch('/endpoint-a').then(()?=>?'a'),
??fetch('/endpoint-b').then(()?=>?'b'),
??fetch('/endpoint-c').then(()?=>?'c'),
];
try?{
??const?first?=?await?Promise.any(promises);
??//?任何一個(gè)?Promise?為?fulfilled?狀態(tài)
??console.log(first);
??//?→???'b'
}?catch?(error)?{
??//?所有?Promise?都被?rejected?了
??console.assert(error?instanceof?AggregateError);
??//?reject?結(jié)果數(shù)組
??console.log(error.errors);
}
如果所有輸入的 Promise 都被拒絕,那么 Promise.any 將會(huì)返回一個(gè) AggregateError 類型的異常,這個(gè)對象的 errors 屬性包含所有 Promise 被拒絕的屬性。
注意不要和 Promise.race 方法弄混, race 方法是數(shù)組中有任何一個(gè) Promise 被解決或拒絕就會(huì)返回,而 any 方法是必須有一個(gè)被解決,如果所有都被拒絕是會(huì)拋出異常的。
String.prototype.replaceAll
String.prototype.replaceAll 提供了一種簡便的方式來替換子字符串的所有匹配,而不再需要?jiǎng)?chuàng)建全局 RegExp 。
看下面的例子,以前你要把 queryString 中所有的 + 替換掉,需要?jiǎng)?chuàng)建一個(gè)全局的正則:
const?queryString?=?'q=query+string+parameters';
queryString.replace(/\+/g,?'?');
現(xiàn)在你只需要使用 replaceAll 方法:
queryString.replaceAll('+',?'?');
邏輯賦值運(yùn)算符
邏輯賦值運(yùn)算符是一種新的復(fù)合賦值運(yùn)算符,他可以把邏輯操作 &&,||或?? 與賦操作結(jié)合成一條命令。
x?&&=?y;
//?等同于?x?&&?(x?=?y)
x?||=?y;
//?等同于?x?||?(x?=?y)
x???=?y;
//?等同于?x????(x?=?y)
推薦閱讀
1、Chrome 大版本更新來了,這是一次「史詩級」增強(qiáng)
2、你不知道的 TypeScript 泛型(萬字長文,建議收藏)
4、immutablejs 是如何優(yōu)化我們的代碼的?
?關(guān)注加加,星標(biāo)加加~
?如果覺得文章不錯(cuò),幫忙點(diǎn)個(gè)在看唄

腦洞前端
采集文章
采集樣式
生成長圖
搜公眾號(hào)
近似文章

