我想知道ECMAScript 2018一部分asynchronous iterators的一些实际用法示例。
对于可读流,它看起来很有用,因为我们可以使用新的for await of
轻松地对其进行迭代。实际上,在Node.js中,可读流已经具有实现为experimental feature的Symbol.asyncIterator
属性:
const fs = require('fs');
async function print(readable) {
readable.setEncoding('utf8');
let data = '';
for await (const k of readable) {
data += k;
}
console.log(data);
}
print(fs.createReadStream('file')).catch(console.log);
但是我想不出其他好的用法。
对于同步迭代器,我们拥有原生对象(如Array或Map),自ES2015开始就包含Symbol.iterator
属性,使其可迭代。在这种情况下,我认为它们的使用范围很广并且易于理解。
任何想法都值得赞赏。