consoleNode
调试插件,在当前节点输出执行结果,用于单个节点的调试和监控。
类型定义
typescript
consoleNode: (resolvePrefix?: string, rejectPrefix?: string) => {
execute: ({ result }: { result: Promise<any> | any }) => any
}
参数说明
resolvePrefix
(可选): 成功时的控制台前缀,默认为'resolve'
rejectPrefix
(可选): 失败时的控制台前缀,默认为'reject'
详情
- 只在当前节点执行,不会传播到子节点
- 无论是否有处理函数,都会立即输出结果
- 对于
Promise
类型的结果,会等待Promise
解析后再输出 - 返回原始的
result
,不会修改数据流
示例
场景 1:基础调试输出
typescript
import { $ } from 'fluth'
const stream$ = $().use(consoleNode())
stream$.next(1)
// 输出: resolve 1
const promise = Promise.resolve(2)
stream$.next(promise)
// 输出: resolve 2
stream$.next(3)
stream$.next(4)
// 输出: resolve 3
// 输出: resolve 4
场景 2:自定义前缀
typescript
import { $ } from 'fluth'
const stream$ = $().use(consoleNode('custom'))
stream$.next('test')
// 输出: custom test
const promise = Promise.resolve('async-test')
stream$.next(promise)
// 输出: custom async-test
场景 3:自定义成功和失败前缀
typescript
import { $ } from 'fluth'
const stream$ = $().use(consoleNode('success', 'failure'))
// 测试成功情况
stream$.next('test-value')
// 输出: success test-value
// 测试失败情况
const rejectedPromise = Promise.reject(new Error('custom error'))
stream$.next(rejectedPromise)
// 输出: failure Error: custom error
场景 4:与防抖操作符结合
typescript
import { $, debounce } from 'fluth'
const promise$ = $()
.pipe(debounce(100))
.use(consoleNode())
.then((value) => console.log(value))
promise$.next(1)
promise$.next(2)
promise$.next(3)
promise$.next(4)
promise$.next(5)
// 立即输出(每次 next 都会触发 consoleNode):
// resolve 1
// resolve 2
// resolve 3
// resolve 4
// resolve 5
// 等待 100ms 后输出(防抖后的结果):
// resolve 5
// 5
场景 5:插件移除
typescript
import { $ } from 'fluth'
const plugin = consoleNode()
const stream$ = $().use(plugin)
stream$.next(1)
// 输出: resolve 1
stream$.remove(plugin)
stream$.next(2)
// 不再输出