Twitter hashtag: #esspec
21:02 再開
便利ツール
時事ネタ
自己紹介 (近況報告)
syumai syumai.icon
Go / TSを書いて暮らしてます
昨日、原稿の入稿が完了しました
金曜、Go Conference Pre Partyで話します
iwatsurut
とくに、イベントもなく過ごしています。
js の話題ではないが、先々週末 Kansai.go に参加しました。
Gmail の受信の条件が厳しくなって、面倒に少し巻き込まれています。
tomato3713tomato3713.icon
Go/TS/Perlを書いてます。
GitHub Copilot Chat に猫になりきらせたりして遊んでいた
tars0x9752 (たーず / naoki aoyama) tars0x9752.icon
肛門周囲膿瘍になるなど、体調を崩していた
前回のあらすじ
Iterator の仕様をひたすら読んでいた
今回の範囲
code:js
const end = 10;
let count = 0;
const it = {
next() {
if (count < end) {
count++;
return 1;
}
return { done: true };
},
};
const obj = {
};
for (const val of obj) {
// TypeError: Iterator result 1 is not an object
console.log(val);
}
4. Set done to ! done.
done は Normal Completion か Throw completion で step 3で throw completion の場合を処理しているので、step 4の!は normal completion である done をdoneにセットするというニュアンスのためだろう
IteratorNext
async じゃないイテレーターをasyncをつけても呼べる機能があって、そこでも使いまわせるように分割してそう
code:js
for await (const v of a) {
console.log(v);
}
AsyncFromSyncIterator
IteratorClose
Iteratorの消費が中途半端になってしまった時に、終了処理(return method)を呼び出すのに使われる
例: ArrayBindingInitialization
code:js
const end = 4;
let count = 0;
const iterator = {
next() {
if (count < end) {
count++;
return { done: false, value: count };
}
return { done: true };
},
return: () => {
console.log("returned!");
return { done: true };
},
};
const iterable = {
};
console.log(a, b, c);
}
f(iterable);
// returned!
// 1 2 3