gpt4 book ai didi

javascript - 触发多个 Action 并等待它们解析 RxJS/Redux Observables

转载 作者:行者123 更新时间:2023-11-30 11:08:46 25 4
gpt4 key购买 nike

我有一个要用来初始化我的应用程序的 Action ,我想为这个 Action 创建一个史诗,然后在这个 Action 的背后触发多个其他 Action ,等待它们全部完成,然后再触发另一个 Action 。我查看了其他问题,它与此非常相似 one

我已经尝试过这种方法,对我来说,它不起作用,它会触发 APP_INIT 操作,但随后无法触发序列中的任何其他操作。有人能帮忙吗?

import { of } from 'rxjs';
import { mergeMap, zip, concat, mapTo } from 'rxjs/operators';
import { ofType } from 'redux-observable';
import { firstAction, secondAction } from 'actions';

export default function appInit (action$) {
return (
action$.pipe(
ofType('APP_INIT'),
mergeMap(() =>
concat(
of(firstAction()),
of(secondAction()),
zip(
action$.ofType('ACTION_ONE_COMPLETE'),
action$.ofType('ACTION_TWO_COMPLETE')
).mapTo(() => console.log('complete'))
)
)
)
);
}

最佳答案

原来我的代码在第一个实例中非常好,主要原因是我从 rxjs/operators 导入 concat 而我应该从rxjs 直接,我花了几个小时才意识到,但现在可以了。

下面的完整代码可能对任何人都有帮助。

import { of, concat, zip } from 'rxjs';
import { mergeMap, map, take } from 'rxjs/operators';
import { ofType } from 'redux-observable';

import { appInitialisationComplete, APP_INITIALISATION } from 'client/actions/app/app';
import { actionOne, ACTION_ONE_COMPLETE } from 'client/actions/action-one/action-one';
import { actioTwo, ACTION_TWO_COMPLETE } from 'client/actions/action-two/action-two';

/**
* appInitialisationEpic
* @param {Object} action$
* @return {Object}
*/
export default function appInitialisationEpic (action$) {
return (
action$.pipe(
ofType(APP_INITIALISATION),
mergeMap(() =>
concat(
of(actionOne()),
of(actioTwo()),
zip(
action$.ofType(ACTION_ONE_COMPLETE).pipe(take(1)),
action$.ofType(ACTION_TWO_COMPLETE).pipe(take(1))
)
.pipe(map(() => appInitialisationComplete()))
)
)
)
);
}

关于javascript - 触发多个 Action 并等待它们解析 RxJS/Redux Observables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54621370/

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