Код IT
← Каталог

Работа с объектами и прототипами — Iterator и AsyncIterator

Фрагмент из «Работа с объектами и прототипами»: Iterator и AsyncIterator.

JavaScript main.js
const asyncRange = {
    from: 1,
    to: 3,
    
    async *[Symbol.asyncIterator]() {
        for (let i = this.from; i <= this.to; i++) {
            await new Promise(resolve => setTimeout(resolve, 1000));
            yield i;
        }
    }
};

// Использование асинхронного итератора
(async () => {
    for await (let num of asyncRange) {
        console.log(num); // 1 (через 1с), 2 (через 2с), 3 (через 3с)
    }
})();
const asyncRange = {
    from: 1,
    to: 3,
    
    async *[Symbol.asyncIterator]() {
        for (let i = this.from; i <= this.to; i++) {
            await new Promise(resolve => setTimeout(resolve, 1000));
            yield i;
        }
    }
};

// Использование асинхронного итератора
(async () => {
    for await (let num of asyncRange) {
        console.log(num); // 1 (через 1с), 2 (через 2с), 3 (через 3с)
    }
})();