I want to chain the promises returned by a generator function.
I am expecting this to print:
started...result is: initial valueresult is: waited for 10msresult is: waited for 20msdone
But it prints:
started...result is: initial valueundefinedresult is: waited for 10msdone
What am I doing wrong?
const wait = async(ms) => await new Promise((resolve) => setTimeout((result = `waited for ${ms}ms`)=>resolve(result),ms))const iterator = { *[Symbol.iterator]() { yield wait(10) yield wait(20) }}function chain(i) { return [...i].reduce((acc,c) => acc.then((result) => (console.log(`result is: ${result}`), c)), Promise.resolve('initial value'))}chain(iterator).then(() => console.log('done'))console.log('started...')