在使用redux-observable时,我试图解决concat和concatMap之间的区别。
在我的直觉中,我认为 concatMap 会起作用: - 从一个FAKE_LOGIN动作中,它将被 switchMap-ed 以发出FAKE_LOGIN_AUTHENTICATING动作。- 在一个FAKE_LOGIN_AUTHENTICATING动作中,它会在FAKE_LOGIN_SUCCESS2 秒的延迟后被concatMap-ed 发出动作。
但是,上面的想法是行不通的。我尝试了各种组合,最后偶然发现了 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 )
);
} )
)
)
);
Run Code Online (Sandbox Code Playgroud)
但这确实
action$.pipe(
switchMap(
action => of( { type: 'FAKE_LOGIN_AUTHENTICATING' } …Run Code Online (Sandbox Code Playgroud)