İçeriğe geç

Eksik İptal Bağlamı (ARCH5024)

Anahtar go.async.missing-context-param · Önem warning · Kategori async

Genel veya uzun süren işlemler, çağrının iptal edilebilmesi için bir context.Context parametresi almalı ve onu alt çağrılara yaymalıdır. Aksi halde istemci bağlantısı koptuğunda iş boşuna devam eder.

func FetchUser(id string) (*User, error) {
resp, err := http.Get("https://api.example.com/users/" + id)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return decodeUser(resp.Body)
}
func FetchUser(ctx context.Context, id string) (*User, error) {
req, _ := http.NewRequestWithContext(ctx, http.MethodGet,
"https://api.example.com/users/"+id, nil)
resp, err := http.DefaultClient.Do(req)
if err != nil {
return nil, err
}
defer resp.Body.Close()
return decodeUser(resp.Body)
}

İlk parametre olarak ctx context.Context ekleyin ve alt çağrılara yayın.