remesh-js / remesh

A CQRS-based DDD framework for large and complex TypeScript/JavaScript applications
https://remesh-js.github.io/remesh/dist/index.html
MIT License
653 stars 40 forks source link

同一个AsyncModule 同时(连续)调用多次,只会触发一次onSuccess #68

Closed FlyingLxy closed 1 year ago

FlyingLxy commented 1 year ago

场景: 获取多个对话的会话列表 每一个会话调用一次 LoadMessageByConversationIdAsyncModule

load会执行多次,onSuccess只会执行一次。 如果中间某一次出现异常,则只会执行一次onFailed,不会执行任何一次onSuccess

image

Lucifier129 commented 1 year ago

这是因为 async-module 默认是 switch mode,反复发送会取消前一次的。

可以设置 options.modemerge,背后就会采用 rxjs 的 mergeMap,每次都是独立的。如果想要按照调用顺序来输出,则可以设置为 concat 模式。

FlyingLxy commented 1 year ago

好的,谢谢