정의

일반적인 Generator와 비슷하지만 조금 차이가 있다.

구현

const asyncRange = {
	from: 5,
	to: 1,
	async *[Symbol.asyncIterator]() {
		for (let value = this.from; value <= this.to; value++) {
			await new Promise(res => setTimeout(res, 1000));
			yield value;
		}
	}
};

for await(let value of asyncRange) {
	console.log(value);
}

보강해보기. ⇒ 코드스피츠 non-blocking javascript보고서