【发布时间】:2019-06-10 11:41:10
【问题描述】:
在使用 redux-observable 时,我试图弄清楚 concat 和 concatMap 之间的区别。
凭我的直觉,我认为 concatMap 会起作用:
- 从 FAKE_LOGIN 动作,它将被 switchMap-ed 以发出 FAKE_LOGIN_AUTHENTICATING 动作。
- 在 FAKE_LOGIN_AUTHENTICATING 动作中,将在 2 秒延迟后 concatMap-ed 发出 FAKE_LOGIN_SUCCESS 动作。
但是,上面的想法是行不通的。我尝试了各种组合,最后偶然发现了 concat 运算符,令人惊讶的是它可以工作。
两者有什么区别?
以下是我的代码:
这不起作用工作
action$.pipe(
switchMap(
action => of( { type: 'FAKE_LOGIN_AUTHENTICATING' } ).pipe(
concatMap( thing => {
return of( { type: 'FAKE_LOGIN_SUCCESS', payload: { userId: 'user-a', userData: {} } } ).pipe(
delay( 2000 )
);
} )
)
)
);
但这确实
action$.pipe(
switchMap(
action => of( { type: 'FAKE_LOGIN_AUTHENTICATING' } ).pipe(
concat(
of( { type: 'FAKE_LOGIN_SUCCESS', payload: { userId: 'user-a', userData: {} } } ).pipe(
delay( 2000 )
)
)
)
)
);
【问题讨论】:
标签: rxjs redux-observable