From 5d7d18a00f878144942448b42570dd3f1c414b42 Mon Sep 17 00:00:00 2001 From: cdle <798731886@qq.com> Date: Tue, 12 Oct 2021 12:12:59 +0800 Subject: [PATCH] update --- core/im.go | 22 ++++++++++++++++------ core/test.go | 11 ++--------- 2 files changed, 18 insertions(+), 15 deletions(-) diff --git a/core/im.go b/core/im.go index d300f44..859454b 100644 --- a/core/im.go +++ b/core/im.go @@ -30,7 +30,7 @@ type Sender interface { Finish() Continue() IsContinue() bool - Await(Sender, func(Sender, error) interface{}, ...interface{}) + Await(Sender, func(Sender) interface{}, ...interface{}) } type Edit int @@ -224,9 +224,10 @@ type Carry struct { 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{} timeout := time.Second * 20 + var handleErr func(error) for _, param := range params { switch param.(type) { case string: @@ -237,7 +238,10 @@ func (_ *BaseSender) Await(sender Sender, callback func(Sender, error) interface timeout = du } case func() string: - callback = param.(func(Sender, error) interface{}) + callback = param.(func(Sender) interface{}) + + case func(error): + handleErr = param.(func(error)) } } if callback == nil { @@ -257,14 +261,20 @@ func (_ *BaseSender) Await(sender Sender, callback func(Sender, error) interface switch result.(type) { case Sender: waits.Delete(key) - c.Result <- callback(result.(Sender), nil) + c.Result <- callback(result.(Sender)) //, nil return case error: waits.Delete(key) - c.Result <- callback(nil, result.(error)) + if handleErr != nil { + handleErr(result.(error)) + } + c.Result <- nil // } case <-time.After(timeout): waits.Delete(key) - c.Result <- callback(nil, TimeOutError) + if handleErr != nil { + handleErr(TimeOutError) + } + c.Result <- nil } } diff --git a/core/test.go b/core/test.go index d30f7ec..a7b97ee 100644 --- a/core/test.go +++ b/core/test.go @@ -166,10 +166,7 @@ func initSys() { old := b.Get(s.Get(1)) b.Set(s.Get(1), s.Get(2)) go func() { - s.Await(s, func(_ Sender, e error) interface{} { - if e != nil { - return nil - } + s.Await(s, func(_ Sender) interface{} { b.Set(s.Get(1), old) return "已撤回。" }, "^撤回$", time.Second*60) @@ -279,11 +276,7 @@ Alias=sillyGirl.service` s.Reply(data) stop := false for { - s.Await(s, func(s2 Sender, err error) interface{} { - if err != nil { - s.Reply(err) - return nil - } + s.Await(s, func(s2 Sender) interface{} { ct := s2.GetContent() if ct == "退出接龙" { stop = true