This commit is contained in:
cdle
2021-10-12 12:12:59 +08:00
parent f23b108551
commit 5d7d18a00f
2 changed files with 18 additions and 15 deletions
+16 -6
View File
@@ -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
View File
@@ -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