備忘録です。
.js
'use strict';
let range = {
from: 1,
to: 5,
[Symbol.asyncIterator]() {
return {
current: this.from,
last: this.to,
async next() {
await new Promise(resolve => setTimeout(resolve, 1000));
if (this.current <= this.last)
return { done: false, value: this.current++ };
else
return { done: true };
}
};
}
}; // here
(async () => { for await (const value of range) console.log(value); })();
here のセミコロンを忘れると、 TypeError: {(intermediate value)(intermediate value)(intermediate value)} is not a function
というエラーになります。
javascript の行解釈のヤなところorz
- 元ネタ: 非同期イテレーションとジェネレータ