课程名称:JavaScript ES(6-11)全版本语法 每个前端都需要的基础课
课程章节: 异步迭代:for await of
主讲老师:谢成
异步迭代:for await of
在 ECMAScript 2015(ES6) 中 JavaScript 引入了迭代器接口(iterator)用来遍历数据。迭代器对象知道如何每次访问集合中的一项, 并跟踪该序列中的当前位置。在 JavaScript 中迭代器是一个对象,它提供了一个 next() 方法,用来返回序列中的下一项。这个方法返回包含两个属性:done 和 value。
迭代器对象一旦被创建,就可以反复调用 next()。
const arr = ["es6", "es7", "es8", "es9"]; arr[Symbol.iterator] = function () { let nextIndex = 0; return { next() { return nextIndex < arr.length ? { value: arr[nextIndex++], done: false, } : { value: undefined, done: true, }; }, }; }; for (let item of arr) { console.log(item); } function getPromise(time) { return new Promise((resolve, reject) => { setTimeout(() => { resolve({ value: time, done: false, }); }, time); }); } const arr = [getPromise(1000), getPromise(2000), getPromise(3000)]; arr[Symbol.asyncIterator] = function () { let nextIndex = 0; return { next() { return nextIndex < arr.length ? arr[nextIndex++] : Promise.resolve({ value: undefined, done: true, }); }, }; }; async function test() { for await (let item of arr) { console.log(item); } } test();
今天学习课程共用了35分钟,重新了解了一下异步迭代:for await of,这是我不知道第多少次决心补习JavaScript基础,希望能够坚持下去。