mirror of
https://github.com/duke-git/lancet.git
synced 2026-02-14 01:32:27 +08:00
feat(netutil): add async http request for http client (#256)
* fix(algorithm): fix bug of lrucache in issue #251 * feat(netutil): add async send request for HttpClient
This commit is contained in:
@@ -221,6 +221,22 @@ func (client *HttpClient) SendRequest(request *HttpRequest) (*http.Response, err
|
||||
return resp, nil
|
||||
}
|
||||
|
||||
// AsyncSendRequest send http request with goroutine, pop response and error to channels
|
||||
func (client *HttpClient) AsyncSendRequest(request *HttpRequest, respChan chan *http.Response, errChan chan error) {
|
||||
go func() {
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
errChan <- fmt.Errorf("%v", err)
|
||||
}
|
||||
}()
|
||||
resp, err := client.SendRequest(request)
|
||||
if err != nil {
|
||||
errChan <- err
|
||||
}
|
||||
respChan <- resp
|
||||
}()
|
||||
}
|
||||
|
||||
// DecodeResponse decode response into target object.
|
||||
// Play: https://go.dev/play/p/jUSgynekH7G
|
||||
func (client *HttpClient) DecodeResponse(resp *http.Response, target any) error {
|
||||
|
||||
Reference in New Issue
Block a user