jl-ecs/request.go

16 lines
277 B
Go
Raw Normal View History

package ecs
// 请求世界执行给定函数
func Request[T any](w World, fn func() T) chan T {
future := make(chan T)
w.Execute(func() {
r := fn()
select {
// 及时外面不接收也不会卡停World运行
case future <- r:
default:
}
})
return future
}