我就废话不多说了,大家还是直接看代码吧~
type Wait interface { // Register waits returns a chan that waits on the given ID. // The chan will be triggered when Trigger is called with // the same ID. Register(id uint64) <-chan interface{} // Trigger triggers the waiting chans with the given ID. Trigger(id uint64, x interface{}) IsRegistered(id uint64) bool } type list struct { l sync.RWMutex m map[uint64]chan interface{} } func Newlist() Wait { return &list{m : make(map[uint64]chan interface{})} } //注册 func (w *list) Register(id uint64) <-chan interface{} { w.l.Lock() defer w.l.Unlock() ch := w.m[id] if ch != nil { log.Fatal("dup id error") return nil } ch = make(chan interface{},1) w.m[id] = ch return ch } //触发 func (w *list) Trigger(id uint64, x interface{}) { w.l.Lock() ch := w.m[id] delete(w.m,id) w.l.Unlock() if ch != nil { ch <- x close(ch) } } //判断该id是否被注册 func (w *list) IsRegistered(id uint64) bool { w.l.RLock() defer w.l.Unlock() _,ok := w.m[id] return ok }
示例
var timeOutDuration = time.Minute*10 func main() { list := Newlist() rid := uint64(time.Now().UnixNano()) go func() { ch := list.Register(rid) fmt.Println("start register:",rid) if ch == nil { return } select { case x := <- ch: fmt.Printf("trigger over id:%d,x:%v\n",rid,x) case <-time.After(timeOutDuration): log.Println("timeout error:",rid) } }() time.Sleep(time.Second) rid2 := uint64(time.Now().UnixNano()) go func() { ch := list.Register(rid2) fmt.Println("start register:",rid2) if ch == nil { return } select { case x := <- ch: fmt.Printf("trigger over id:%d,x:%v\n",rid2,x) case <-time.After(timeOutDuration): log.Println("timeout error:",rid2) } }() go func() { time.Sleep(time.Second*5) list.Trigger(rid,"Hello") time.Sleep(time.Second*3) list.Trigger(rid2,"World") }() select { } }
补充:GO 程序等待一段时间执行
我就废话不多说了,大家还是直接看代码吧~
package main import ( "fmt" "time" ) func main() { fmt.Println(time.Now()) //等1秒 time.Sleep(time.Second * 1) fmt.Println(time.Now()) //等1秒 <-time.After(time.Second * 1) fmt.Println(time.Now()) }
以上为个人经验,希望能给大家一个参考,也希望大家多多支持小牛知识库。如有错误或未考虑完全的地方,望不吝赐教。
使用mui.trigger()方法可以动态触发特定DOM元素上的事件。 .trigger( element , event , data ) element Type: Element 触发事件的DOM元素 event Type: String 事件名字,例如:'tap'、'swipeleft' data Type: Object 需要传递给事件的业务参数 示例 自动触发按钮的点击事件: var
问题内容: 我的整个项目都使用(Bluebird)Promises,但是有一个使用EventEmitter的特定库。 我想要实现以下目标: 我在Promises链中读了EventEmitter的答案。这给了我一种执行’connect’事件的回调的方法。这是我到目前为止所到之处 现在如何进一步链接“ eventB”? 问题答案: 我假设您想为每个事件做不同的事情。即使由的动作触发,您也可以将其视为另
我正在使用Amazon Transcripbe服务,并试图让CloudWatch事件激发一个Lambda函数,该函数执行对我的API的POST请求。 下面是Lambda函数 我已经将CloudWatch事件配置为监听Amazon Transcripbe服务,特别是监听作业状态更改为或。 这是我认为我的应用程序工作的唯一方式,转录作业是通过亚马逊转录服务调用的,然后当它完成时,点击我的API来更新我
本文向大家介绍JS代码触发事件代码实例,包括了JS代码触发事件代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了js代码触发事件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。
本文向大家介绍javascript的事件触发器介绍的实现,包括了javascript的事件触发器介绍的实现的使用技巧和注意事项,需要的朋友参考一下 事件触发器从字面意思上可以很好的理解,就是用来触发事件的,但是有些没有用过的朋友可能就会迷惑了,事件不是通常都由用户在页面上的实际操作来触发的吗?这个观点不完全正确,因为有些事件必须由程序来实现,如自定义事件,jQuery的ajax框架的一些自定义事件
问题内容: 我有3个文件: js_json.js->用于我的json代码 javascript.js->用于我的javascript函数 index.php 这里的代码为: 这是我的代码: 这里的代码: 我的问题是: 当我单击链接“ Hola Test 1”时,它将起作用并显示消息。问题是,在单击选择选项之后,出现了链接“ Hola Test”,然后单击该链接(“ Hola Test”),该消息没