//每日前端夜话第篇//正文共:字//预计阅读时间:8分钟
ES规范引入了四个新功能。这些功能包括异步迭代,rest/spread属性,Promise.prototype.finally()和正则表达式改进。本问将帮你了解这些ES功能的工作原理及使用方法。
异步迭代
异步迭代是讨论的比较少ES功能之一。虽然还有很多关于ES其他功能的讨论,但几乎没有关于异步迭代这方面的内容。通过异步迭代,我们可以得到异步的可迭代对象和迭代器。
这意味着你可以把await关键字与for…of循环放在一起使用。你可以用这些循环对可迭代对象进行迭代。可迭代对象的包括数组、map、set,NodeList,函数的arguments参数,TypedArray等。
在ES之前,for...of循环是同步的。如果你试着迭代涉及异步操作的可迭代对象并await,则无法正常工作。循环本身会保持同步,基本上忽略await,并在其内部的异步操作可以完成之前完成迭代。
//下面的代码在ES之前不起作用,因为循环保持同步。//创建一个异步函数:asyncfunctionprocessResponses(someIterable){//对可迭代对象进行迭代for(letitemofsomeIterable){//通过异步操作处理项目,例如promise:awaitprocessItem(item)}}
同时for...of循环也可以与异步代码一起使用。也就是说可以在遍历可迭代对象时执行一些异步操作。for...of循环将会是异步的,让你能够等待异步操作完成。
需要记住的是在哪里使用await关键字。不需要把它放进循环体中,应该将其放在for...of关键字中for的后面。现在当你用next()方法获取异步迭代器的下个值时,将会得到一个Promise。如果你想了解更多信息,可以在GitHub上去看看(