Re:My Node.js is a bit Rusty
by z3t4 on Friday September 08, 2023 @04:40AM
(#37431114)
[delayed]
[ Parent
| on HN ]
I don't believe that's true. Consider this infinite generator:
async function* infinite() {
while (1) {
yield 'example'
}
}
(async function () {
for await (const value of infinite()) {
console.log(value)
}
})()
If the generator was consumed all at once, this would never print (because the generator is infinite). `for await... of` should only consume a single step of the stream / generator at a time. It's just syntactic sugar for the usual calls to .next() and etc. See the docs here[0][0] https://developer.mozilla.org/en-US/docs/Web/JavaScript/Refe...
"for await" uses async iterators, which is pretty much the same thing as a stream - just way simpler to use.
Re:My Node.js is a bit Rusty
by nightlyherb on Friday September 08, 2023 @07:17AM
(#37432109)
N.B. Assuming `readLineStream` in that for await loop is node's readline object, the code is iterating over an asyncIterator[1] which works exactly as what you describe in your solution. (AsyncIterators have a next method that returns a Promise of the next item)
[1] https://nodejs.org/api/readline.html#rlsymbolasynciterator