function next ({done, value}) {
return new Promise(resolve => {
if (done) { // finish
resolve(value)
} else { // not yet
value.then(data => {
next(gen.next(data)).then(resolve)
})
}
})
}
function * main () {
let num1 = yield 1
let num2 = yield 2
return num1 + num2
}
main().next()
https://es6.ruanyifeng.com/#d...