Tim*_*ütz 0 javascript yield ecmascript-6
我有以下代码:
object = {
getPastEvents: () => Promise.resolve([1,2,3])
}
function* fetchPastEvents() {
const values = yield object.getPastEvents()
console.log(values)
}
const events = fetchPastEvents()
events.next()
events.next()
Run Code Online (Sandbox Code Playgroud)
现在我想知道如何创建一个getPastEvents返回已定义的函数values.现在,values是undefined.我认为收益率可以解决像异步等待的承诺.
当你打电话时.next,你恢复运行发电机功能.如果要使用特定值恢复它,请将值传递给.next.因此,如果你想复制redux-saga解析promises然后恢复生成器的行为,你需要接受第一次调用所产生的承诺.next,等待使用其.then方法解析的promise ,然后.next使用value 调用它解决了.
const object = {
getPastEvents: () => Promise.resolve([1,2,3])
}
function* fetchPastEvents() {
console.log("entry")
const values = yield object.getPastEvents()
console.log(values)
}
const iterator = fetchPastEvents()
const promise = iterator.next().value;
promise.then(val => iterator.next(val))Run Code Online (Sandbox Code Playgroud)
我建议你不要自己这样做.如果这是你所说的传奇,那么通过redux saga运行它你就会免费获得这种行为.或者正如其他人所提到的,co库实现了类似的功能.