我正在尝试将两个异步史诗在redux-observable中串在一起。这两个史诗中的每一个都会在超时后分派多个动作,如下所示:
epicOne
const epicOne = action$ => {
return action$.pipe(
mergeMap( action => {
// wait for a promise
const timeout = new Promise( resolve => {
setTimeout( () => { resolve( true ) }, 1000 );
} );
// dispatch multiple actions
return from( timeout ).pipe(
mergeMap( () => {
return [
someActionA(),
someActionB()
];
} )
);
} )
);
}
epicTwo
const epicTwo = action$ => {
return action$.pipe(
mergeMap( action => {
// wait for a promise
const timeout = new Promise( resolve => {
setTimeout( () => { resolve( true ) }, 500 );
} );
// dispatch multiple actions
return from( timeout ).pipe(
mergeMap( () => {
return [
someActionC(),
someActionD()
];
} )
);
} )
);
}
现在,当我尝试通过如下所示的epicCombine
依次 调用这两个史诗时,我很难将它们
epicCombine
const epicCombine = action$ => {
return action$.pipe(
concatMap( action => {
return [
epicOneAction(),
epicTwoAction()
];
} )
);
}
由于epicTwo
的超时时间较短,似乎这是被称为操作的顺序:
在{em> epicTwo
完成后(包括epicOne
和someActionA
之后,someActionB
是否可以称为?
我一直在努力将如何将concat
运算符构造为代码,但无济于事。非常感谢任何人的帮助!