ES11(也称为 ECMAScript 2020)是 JavaScript 编程语言的最新版本,它引入了一些新的功能和语法,旨在使 JavaScript 更加强大和易于使用。在前两篇文章中,我们介绍了 ES11 中的一些新功能,如可选链操作符、nullish 合并操作符等。在本文中,我们将介绍 ES11 中的另外两个新功能:Promise.allSettled() 和 String.prototype.replaceAll()。
Promise.allSettled()
Promise.all() 是一个常用的方法,可以接受一个包含多个 Promise 对象的数组,并在所有 Promise 对象都解决时返回一个解决的 Promise 对象。但是,如果其中一个 Promise 对象被拒绝,Promise.all() 就会立即返回一个被拒绝的 Promise 对象。这可能会导致一些问题,因为您可能想要等待所有 Promise 对象都完成(无论它们是否被解决),然后再做出决定。
ES11 引入了 Promise.allSettled() 方法,它与 Promise.all() 类似,但不会在任何 Promise 对象被拒绝时立即返回。相反,它会等待所有 Promise 对象都完成(无论它们是否被解决),然后返回一个解决的 Promise 对象,该对象包含一个数组,该数组包含每个 Promise 对象的状态和结果。这个数组的顺序与传递给 Promise.allSettled() 的 Promise 对象数组的顺序相同。
下面是一个使用 Promise.allSettled() 的示例代码:
-- -------------------- ---- ------- ----- -------- - - ---------------------------- --------------------------- ------------------------- ------- -- ---------------------------- ------------- -- - ---------------------- -- - --------------------------- -- ----------- -- ---------- -------------------------- -- --- -------- ----- -- --- --------- ------ --- ---
在这个示例中,我们创建了一个包含三个 Promise 对象的数组。第一个和第三个 Promise 对象都是解决的,而第二个 Promise 对象是被拒绝的。我们使用 Promise.allSettled() 方法来等待所有 Promise 对象都完成,然后打印每个 Promise 对象的状态和结果。
String.prototype.replaceAll()
在 ES11 中,String.prototype.replaceAll() 方法被引入,它是 String.prototype.replace() 方法的一个变体。String.prototype.replace() 方法只会替换第一个匹配项,而 String.prototype.replaceAll() 方法将替换所有匹配项。
下面是一个使用 String.prototype.replaceAll() 的示例代码:
const str = 'Hello, world!'; const newStr = str.replaceAll('o', '0'); console.log(newStr); // "Hell0, w0rld!"
在这个示例中,我们使用 String.prototype.replaceAll() 方法将所有的 "o" 字符替换为 "0" 字符。结果字符串是 "Hell0, w0rld!"。
结论
ES11 引入了一些新的功能和语法,使 JavaScript 更加强大和易于使用。在本文中,我们介绍了 ES11 中的两个新功能:Promise.allSettled() 和 String.prototype.replaceAll()。Promise.allSettled() 方法可以等待所有 Promise 对象都完成,然后返回一个包含每个 Promise 对象的状态和结果的数组。String.prototype.replaceAll() 方法可以替换所有匹配项,而不仅仅是第一个匹配项。这些新功能可以帮助您更轻松地编写更高效的 JavaScript 代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/676686b376af2b9a20f84e4c