所以我知道这个问题可能看似简单,但事情并非如此简单。
我尝试过的所有操作符,例如combineLatest
,concat
和switchMap
都会导致差异问题。
所以这是挑战:
var campaignSelected$ = this.store.select(store => store.appDb.uiState.campaign.campaignSelected)
var campaignsList$ = this.store.select(store => store.msDatabase.sdk.table_campaigns);
return campaignSelected$.switchMap(i_campaignSelected => campaignsList$, (campaignId, campaigns) => {
return 'foo';
})
所以我有两个流,我只希望在第一个流campaignSelected$
发出时收到通知,此时我想切换并从我的第二个campaignsList$
流中获取数据,所以一切都很棒。
但是,如果稍后campaignsList$
因为商店已更改而再次发出,我将再次收到通知,我不希望收到通知,因为我只关心{{{ 1}}。
请记住,我的第二个流不会在第一个流的同时发生变化,因此concat等运算符将无效。
现在我已经尝试campaignSelected$
和diff合并opertors并且它们都不够,即:我的第一个流发出时只需要通知,而第二个流发出时不需要通知,但我们仍然需要抓取数据来自第二个流,但是当且仅当第一个流发出时。
答案 0 :(得分:1)
如果您希望在第一个流发出时收到通知,而不是在第二个流发出时收到通知,则withLatestFrom
运算符就是您要查找的内容:
class DebugTest extends PHPUnit_Framework_TestCase
{
public function test()
{
ob_start();
$d = new Debug;
$d->log('foo');
$this->assertEquals(
'foo',
ob_get_clean()
);
}
}