同步等待组和通道的最佳实践是什么?我想在循环中处理消息和阻塞,似乎将通道的关闭委托给另一个 go 例程似乎是一个奇怪的解决方案?
func Crawl(url string, depth int, fetcher Fetcher) {
ch := make(chan string)
var waitGroup sync.WaitGroup
waitGroup.Add(1)
go crawlTask(&waitGroup, ch, url, depth, fetcher)
go func() {
waitGroup.Wait()
close(ch)
}()
for message := range ch {
// I want to handle the messages here
fmt.Println(message)
}
}
func crawlTask(waitGroup *sync.WaitGroup, ch chan string, url string, depth int, fetcher Fetcher) {
defer waitGroup.Done()
if depth <= 0 {
return
}
body, urls, err := fetcher.Fetch(url)
if err != nil { …
Run Code Online (Sandbox Code Playgroud) 有没有办法为桌面通知设置事件侦听器?
document.addEventListener("desktop notification", function(){
// do something
});
Run Code Online (Sandbox Code Playgroud)
我查看了MDN 事件参考,但通知的唯一事件类型似乎仅适用于alert()
.