-
课程名称: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基础,希望能够坚持下去。