第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 NgRx (Angular) 的效果中將動作鏈接在一起

在 NgRx (Angular) 的效果中將動作鏈接在一起

暮色呼如 2021-12-23 19:46:23
我有一個有效的效果,但我需要將它與在第一個操作中通過減速器更新狀態(tài)后在另一個操作中調(diào)用的服務(wù)鏈接起來。效果如下:@Effect()uploadSpecChange$: Observable<Action> = this.actions$.pipe(    ofType(AppActions.WorkspaceActionTypes.UploadChange),    switchMap((x: any) => {        let f = new FileReader();        f.readAsText(x.payload);        return fromEvent(f, 'load');    }),    map((result: any) => {        const raw = (<FileReader>result.target).result as string;        const res = JSON.parse(raw);        // console.log(res);        return            new AppActions.UploadComplete(res),            new AppActions.PerformCalc()    }));我添加了第二個操作,但現(xiàn)在收到一個 Observable 錯誤。
查看完整描述

3 回答

?
慕妹3146593

TA貢獻1820條經(jīng)驗 獲得超9個贊

因此,如果您想從一個效果中分派多個動作,您可以返回一組動作并將您的替換map為mergeMap:


@Effect()

uploadSpecChange$: Observable<Action> = this.actions$.pipe(

    ofType(AppActions.WorkspaceActionTypes.UploadChange),

    switchMap((x: any) => {

        let f = new FileReader();

        f.readAsText(x.payload);

        return fromEvent(f, 'load');

    }),

    mergeMap((result: any) => {

        const raw = (<FileReader>result.target).result as string;

        const res = JSON.parse(raw);

        // console.log(res);

        return [

            new AppActions.UploadComplete(res),

            new AppActions.PerformCalc()

        ];

    })

);

但是,如果您希望在PerformCalc操作完成后分派該UploadComplete操作,您應(yīng)該分派PerformCalc作為 的副作用UploadComplete:


@Effect()

uploadSpecChange$: Observable<Action> = this.actions$.pipe(

    ofType(AppActions.WorkspaceActionTypes.UploadChange),

    switchMap((x: any) => {

        let f = new FileReader();

        f.readAsText(x.payload);

        return fromEvent(f, 'load');

    }),

    map((result: any) => {

        const raw = (<FileReader>result.target).result as string;

        const res = JSON.parse(raw);

        // console.log(res);

        return new AppActions.UploadComplete(res);

    })

);


@Effect()

uploadComplete$: Observable<Action> = this.actions$.pipe(

    ofType(AppActions.WorkspaceActionTypes.UploadComplete),

    map(() => new AppActions.PerformCalc())

);


查看完整回答
反對 回復(fù) 2021-12-23
?
蝴蝶不菲

TA貢獻1810條經(jīng)驗 獲得超4個贊

多個動作返回一個@Effect,


你需要使用concatMap而不是map


concatMap((result: any) => {

    const raw = (<FileReader>result.target).result as string;

    const res = JSON.parse(raw);

    return [

        new AppActions.UploadComplete(res),

        new AppActions.PerformCalc()

    ]

})


查看完整回答
反對 回復(fù) 2021-12-23
?
米琪卡哇伊

TA貢獻1998條經(jīng)驗 獲得超6個贊

您可以使用 switchMap & of operator 這樣做


@Effect()

dispatchMultiAction$: Observable<Action> = this.actions$.pipe(

    ofType<SomeAction.Dispatch>(someActions.Dispatch),

    switchMap(_ =>

        of(

            new someActions.InitData(),

            new someActions.GetData(),

            new someActions.LoadData()

        )

    )

);


查看完整回答
反對 回復(fù) 2021-12-23
  • 3 回答
  • 0 關(guān)注
  • 172 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號