gpt4 book ai didi

javascript - Redux-Saga:saga 的执行顺序有保证吗?

转载 作者:行者123 更新时间:2023-11-29 17:48:09 28 4
gpt4 key购买 nike

如果我有两个 sagas 在同一 Action 上等待 yield take(),是否可以保证哪个 saga 将首先选择该 Action 并执行其剩余逻辑或者是随机的?我需要确保第一个传奇在第二个传奇之前执行其逻辑。

function* rootSaga() {
yield [
saga1(),
saga2()
]
}

function* saga1() {
while (true) {
//Random logic
yield take("MY_ACTION")
//Finish executing logic
}
}

function* saga2() {
while (true) {
//Random logic
yield take("MY_ACTION")
//Finish executing logic
}
}

最佳答案

你不能依赖这里的执行顺序。当您的 Action 被调度时,所有产生了与该 Action 匹配的 take 效果的 sagas 将立即恢复。如果执行顺序是“有保证的”,那么它就是您不应依赖的实现细节。

如果您需要在 saga1 执行完 "MY_ACTION" 之后的逻辑之后恢复您的 saga2,那么您的 saga2 真正应该等待的是一个不同的 Action ,表明 saga1 已经完成了它的工作,而不是第一个。

function* rootSaga() {
yield [
saga1(),
saga2()
]
}

function* saga1() {
while (true) {
//Random logic
yield take("MY_ACTION")
//Finish executing logic
yield put({type: "MY_ACTION_DONE"})
}
}

function* saga2() {
while (true) {
//Random logic
yield take("MY_ACTION_DONE")
//Finish executing logic
}
}

关于javascript - Redux-Saga:saga 的执行顺序有保证吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46993897/

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