一直在试图弄清楚到底是做什么for await .. of
的。但是,即使阅读规格,我也无法准确找到它的作用。
这是我的猜测:
const it = iterable[Synbol.asyncIterator]();
while (true) {
const { done, value } = await it.next();
if (done) return;
// User code...
}
但是,如果迭代器实现return
并且throw
我不确定它们在哪里/如何发挥作用?
一种猜测是:
const it = iterable[Synbol.asyncIterator]();
try {
while (true) {
const { done, value } = await it.next();
if (done) return;
try {
// User code...
} catch (err) {
const { done } = await it.throw(err);
if (done) return;
}
}
} finally {
it.return();
}