gpt4 book ai didi

javascript - 我们可以将 race 与 takeEvery 一起使用吗?

转载 作者:行者123 更新时间:2023-11-29 23:45:56 25 4
gpt4 key购买 nike

我正在使用 saga,我试图在 takeEvery 和超时之间实现竞争。如果用户没有执行某项操作,我想发送 DISMISS 操作(超时)。但如果用户已经完成了操作,我不想发送 DISMISS 操作。

我没有成功,所以我的问题是,我可以使用 takeEvery 进行比赛吗?

const id = 5 // just for the example
const {a, b} = yield race({
a: yield takeEvery(DISMISS, function* ({payload}) {
if (payload === id) {
// find a way to win the race
}
// continue to listen
}),
b: yield call(delay, 6000),
})

最佳答案

我找到了你不应该使用 takeEvery 而是使用一段时间的正常调用的解决方案:

回答:

const {timeout} = yield race({
_: call(yourFunction$, param),
timeout: call(delay, alertDelay),
})

与:

function* yourFunction$(param) {
let yourCond = true
while (yourCond) {
const action = yield take(YOUR_ACTION_TYPE)
// do what you want
}
}

关于javascript - 我们可以将 race 与 takeEvery 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44147179/

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