我想创建一个在工作之前侦听明确的动作序列的史诗。
这首史诗在第一次完成后也不需要存在。
我想象的是:
function doTheThing(action$) {
return action$
// The start of the sequence
.ofType(FIRST_ACTION)
// Do nothing until the second action occurs
.waitForAnotherAction(SECOND_ACTION)
// the correct actions have been dispatched, do the thing!
.map(() => ({ type: DO_THE_THING_ACTION }))
.destroyEpic();
}
redux-observable
是否可以这样?
答案 0 :(得分:6)
正如@jayphelps在评论中指出的那样,根据您是否需要访问各种事件以及是否必须严格订购事件,有几种变体。所以以下都应该适合:
1)严格命令不关心事件:
#include <iostream>
using namespace std;
void pi(int arr[],int x){
for(int c = 0;c < x;c++){
cout << arr[x] << endl;
}
}
int main()
{
int _arr[4] = {3543,146,961262,-242};
pi(_arr, 4);
}
2)严格命令关注事件
action$
.ofType(FIRST_ACTION)
.take(1)
.concat(action$.ofType(SECOND_ACTION).take(1))
.mapTo({ type: DO_THE_THING_ACTION })
3)非严格命令(做或不关心)事件
action$
.ofType(FIRST_ACTION)
.take(1)
.concatMap(
a1 => action$.ofType(SECOND_ACTION).take(1),
(a1, a2) => ({type: DO_THE_THING_ACTION, a1, a2})
)
答案 1 :(得分:4)
这是它与redux observables的相似之处:
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/observable/zip';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/take';
function doTheThing(action$) {
return Observable
// waits for all actions listed to complete
.zip(action$.ofType(FIRST_ACTION).take(1),
action$.ofType(SECOND_ACTION).take(1),
)
// do the thing
.map(() => ({ type: DO_THE_THING_ACTION }));
}