对 Javascript 中的这个生成器函数做了什么很愚蠢:
function* generator() { let hook, waiting = yield new Promise(resolve => { function* wait() { resolve(yield) } hook = wait(); hook.next(); }); hook.next(waiting); }
这个需要几分钟来处理。
该resolve(yield)部分实际上为承诺提供了第二个 next() 调用的参数(等待)的值。我认为这可以用更清洁的方式制作,只需 1 个发电机。
resolve(yield)
MDN 上的 generator.next()
结果是:
let g = generator() g.next().value.then(console.log) // returns a pending promise g.next("test") // returns nothing important but // the then callback logs "test"
因此,您可以在第一次调用 generator.next().value 时放置尽可能多的回调,然后让它们全部在第二次调用,同时还可以将参数传递给第一个参数,您可以以常规的 Promise 方式链接该参数。