update
This commit is contained in:
+16
-6
@@ -30,7 +30,7 @@ type Sender interface {
|
|||||||
Finish()
|
Finish()
|
||||||
Continue()
|
Continue()
|
||||||
IsContinue() bool
|
IsContinue() bool
|
||||||
Await(Sender, func(Sender, error) interface{}, ...interface{})
|
Await(Sender, func(Sender) interface{}, ...interface{})
|
||||||
}
|
}
|
||||||
|
|
||||||
type Edit int
|
type Edit int
|
||||||
@@ -224,9 +224,10 @@ type Carry struct {
|
|||||||
Sender Sender
|
Sender Sender
|
||||||
}
|
}
|
||||||
|
|
||||||
func (_ *BaseSender) Await(sender Sender, callback func(Sender, error) interface{}, params ...interface{}) {
|
func (_ *BaseSender) Await(sender Sender, callback func(Sender) interface{}, params ...interface{}) {
|
||||||
c := &Carry{}
|
c := &Carry{}
|
||||||
timeout := time.Second * 20
|
timeout := time.Second * 20
|
||||||
|
var handleErr func(error)
|
||||||
for _, param := range params {
|
for _, param := range params {
|
||||||
switch param.(type) {
|
switch param.(type) {
|
||||||
case string:
|
case string:
|
||||||
@@ -237,7 +238,10 @@ func (_ *BaseSender) Await(sender Sender, callback func(Sender, error) interface
|
|||||||
timeout = du
|
timeout = du
|
||||||
}
|
}
|
||||||
case func() string:
|
case func() string:
|
||||||
callback = param.(func(Sender, error) interface{})
|
callback = param.(func(Sender) interface{})
|
||||||
|
|
||||||
|
case func(error):
|
||||||
|
handleErr = param.(func(error))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if callback == nil {
|
if callback == nil {
|
||||||
@@ -257,14 +261,20 @@ func (_ *BaseSender) Await(sender Sender, callback func(Sender, error) interface
|
|||||||
switch result.(type) {
|
switch result.(type) {
|
||||||
case Sender:
|
case Sender:
|
||||||
waits.Delete(key)
|
waits.Delete(key)
|
||||||
c.Result <- callback(result.(Sender), nil)
|
c.Result <- callback(result.(Sender)) //, nil
|
||||||
return
|
return
|
||||||
case error:
|
case error:
|
||||||
waits.Delete(key)
|
waits.Delete(key)
|
||||||
c.Result <- callback(nil, result.(error))
|
if handleErr != nil {
|
||||||
|
handleErr(result.(error))
|
||||||
|
}
|
||||||
|
c.Result <- nil //
|
||||||
}
|
}
|
||||||
case <-time.After(timeout):
|
case <-time.After(timeout):
|
||||||
waits.Delete(key)
|
waits.Delete(key)
|
||||||
c.Result <- callback(nil, TimeOutError)
|
if handleErr != nil {
|
||||||
|
handleErr(TimeOutError)
|
||||||
|
}
|
||||||
|
c.Result <- nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-9
@@ -166,10 +166,7 @@ func initSys() {
|
|||||||
old := b.Get(s.Get(1))
|
old := b.Get(s.Get(1))
|
||||||
b.Set(s.Get(1), s.Get(2))
|
b.Set(s.Get(1), s.Get(2))
|
||||||
go func() {
|
go func() {
|
||||||
s.Await(s, func(_ Sender, e error) interface{} {
|
s.Await(s, func(_ Sender) interface{} {
|
||||||
if e != nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
b.Set(s.Get(1), old)
|
b.Set(s.Get(1), old)
|
||||||
return "已撤回。"
|
return "已撤回。"
|
||||||
}, "^撤回$", time.Second*60)
|
}, "^撤回$", time.Second*60)
|
||||||
@@ -279,11 +276,7 @@ Alias=sillyGirl.service`
|
|||||||
s.Reply(data)
|
s.Reply(data)
|
||||||
stop := false
|
stop := false
|
||||||
for {
|
for {
|
||||||
s.Await(s, func(s2 Sender, err error) interface{} {
|
s.Await(s, func(s2 Sender) interface{} {
|
||||||
if err != nil {
|
|
||||||
s.Reply(err)
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
ct := s2.GetContent()
|
ct := s2.GetContent()
|
||||||
if ct == "退出接龙" {
|
if ct == "退出接龙" {
|
||||||
stop = true
|
stop = true
|
||||||
|
|||||||
Reference in New Issue
Block a user