feat: super 包新增 TryReadChannel、TryReadChannelByHandler 函数用于对 channel 尝试写入
This commit is contained in:
parent
756f823ca4
commit
959abff85f
|
@ -20,3 +20,25 @@ func TryWriteChannelByHandler[T any](ch chan<- T, data T, handler func()) {
|
||||||
handler()
|
handler()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TryReadChannel 尝试读取 channel,如果 channel 无法读取则忽略,返回是否读取成功
|
||||||
|
// - 无法读取的情况包括:channel 已空、channel 已关闭
|
||||||
|
func TryReadChannel[T any](ch <-chan T) (v T, suc bool) {
|
||||||
|
select {
|
||||||
|
case data := <-ch:
|
||||||
|
return data, true
|
||||||
|
default:
|
||||||
|
return v, false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// TryReadChannelByHandler 尝试读取 channel,如果 channel 无法读取则执行 handler
|
||||||
|
// - 无法读取的情况包括:channel 已空、channel 已关闭
|
||||||
|
func TryReadChannelByHandler[T any](ch <-chan T, handler func(ch <-chan T) T) (v T) {
|
||||||
|
select {
|
||||||
|
case data := <-ch:
|
||||||
|
return data
|
||||||
|
default:
|
||||||
|
return handler(ch)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue