Skip to content

统一取消订阅

vue框架为例,如果流是从其他地方导入到vue组件的,想要组件销毁后订阅自动取消,可以使用 plugin thenPlugin统一处理:

javascript
import { getCurrentScope, onScopeDispose } from "vue";
import { Stream } from "fluth";

const promise$ = new Stream();

promise$.plugin.then.push((unsubscribe) => {
  if (getCurrentScope()) onScopeDispose(unsubscribe);
});

vue单文件setup函数中订阅的节点在vue组件销毁后自动取消订阅,避免内存泄漏。

统一错误处理

通过pluginexecutePlugin统一对接点的错误进行处理:

javascript
import { Stream } from "fluth";

const promise$ = new Stream();

promise$.plugin.execute.push((promise) =>
  promise.catch((err) => {
    console.error(err);
  })
);

分流

分流指的是在一条流中触发另一条流节点的运行

触发 Stream 流

image

触发 Stream 节点则可以推送数据

typescript
import { Stream } from "fluth";

const promise1$ = new Stream();
const subjection1$ = promise1$.then((data) => console.log(data));

const promise2$ = new Stream();
// 在一条流中触发另一条流
const subjection2$ = promise2$.then((data) => {
  promise1$.next(data + 1);
});

触发 Subjection 流

image 触发 Subjection 节点则无法推送数据

typescript
import { Stream } from "fluth";

const promise1$ = new Stream();
const subjection1$ = promise1$.then((data) => console.log(data));

const promise2$ = new Stream();
// 在一条流中触发另一条流
const subjection2$ = promise2$.then((data) => {
  subjection1$.execute();
});

合流

如果需要合并多条流的数据,需要看看操作符 combine merge concat 等来进行合流。