Skip to content

数据流 (Stream)

类型定义

typescript
// useFetch 返回值中的 promise$
promise$: Stream<T | undefined>;

背景

useFetch 在执行请求后,除了提供响应式的 data 数据外,还提供了基于 fluth 的数据流 promise$。通过 promise$ 可以订阅每次请求的结果,实现更灵活的异步数据处理。

用法

订阅请求结果

ts
const { execute, promise$ } = useFetch("https://api.example.com/data", {
  immediate: false,
});

// 订阅成功结果
promise$.then((data) => {
  console.log("请求成功:", data);
});

// 订阅错误结果
promise$.catch((error) => {
  console.log("请求失败:", error);
});

execute(); // 触发请求,promise$ 会推送结果

流输入输出

异步请求方法用 useFetch 封装,流作为输入输出,可以实现流式编程。

ts
const url$ = $("https://api.example.com/data");
const payload$ = $({ id: 1, name: "fluth" });
const { promise$ } = useFetch(url$, { immediate: false, refetch: true })
  .get(payload$)
  .json();

promise$.then((data) => {
  console.log(data);
});

url$.next("https://api.example.com/data2"); // 触发请求,并打印结果
payload$.next({ id: 2, name: "vue" }); // 触发请求,并打印结果