Теперь я хотел переписать этот пример кода, в котором [Symbol.asyncIterator]() просто устанавливает значение this.current, а затем возвращает его. Я хочу иметь определение функции async next непосредственно в объекте range.
Моя текущая попытка заключается в следующем, но на самом деле она не делает того, что предполагалось. Он должен подождать одну секунду, выводит 1. Затем ждет еще секунду, выводит 2. И так далее (до 5).
Код: Выделить всё
let range = {
from: 1,
to: 5,
[Symbol.asyncIterator]() {
this.current = this.from
return this
},
next() {
let promise = new Promise((resolve, reject) => {
setTimeout(() => resolve(this), 1000)
});
promise.then(
function(result) {
if (result.current {
for await (let step of range) {
console.log(step)
}
})()
Код: Выделить всё
file:///test.mjs:29
for await (let step of range) {
^
TypeError: Iterator result undefined is not an object
Подробнее здесь: https://stackoverflow.com/questions/798 ... es-example
Мобильная версия