gpt4 book ai didi

javascript - 为什么yield不能解析promise?

转载 作者:行者123 更新时间:2023-11-28 11:20:38 24 4
gpt4 key购买 nike

我有以下代码:

object = {
getPastEvents: () => Promise.resolve([1,2,3])
}

function* fetchPastEvents() {
const values = yield object.getPastEvents()
console.log(values)
}

const events = fetchPastEvents()
events.next()
events.next()

现在我想知道如何创建一个返回定义的的函数getPastEvents。目前,values未定义。我认为yield可以解决像async wait这样的promise。

最佳答案

当您调用.next时,您将继续运行生成器函数。如果您想使用特定值恢复它,请将一个值传递到 .next 中。因此,如果您想复制 redux-saga 解决 Promise 然后恢复生成器的行为,您需要获取第一次调用 .next 产生的 Promise,等待 Promise 通过使用来解决它的 .then 方法,然后使用它解析的值调用 .next

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))

不过,我建议您不要自己这样做。如果这是一个如您所说的传奇,那么通过 redux saga 运行它,您将免费获得此行为。或者正如其他人提到的,co库实现了类似的功能。

关于javascript - 为什么yield不能解析promise?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52915545/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com