Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Memeriksa Pembatalan Permintaan dengan Amanah dalam Go?

Bagaimana untuk Memeriksa Pembatalan Permintaan dengan Amanah dalam Go?

Susan Sarandon
Lepaskan: 2024-11-08 17:29:01
asal
792 orang telah melayarinya

How to Reliably Check for Request Cancellation in Go?

Cara Semak Pembatalan Permintaan

Dalam Go, pengaturcara mungkin menghadapi senario di mana mereka perlu menentukan sama ada permintaan telah dibatalkan. Walau bagaimanapun, menggunakan konteks ==.Perbandingan yang dibatalkan dalam Go 1.9 dan lebih awal boleh menghasilkan hasil yang tidak dijangka.

Untuk menyemak pembatalan permintaan dengan tepat, pertimbangkan pendekatan berikut:

1. Gunakan konteks.Objek Ralat Dibatalkan:

Dalam Go 1.13 dan kemudian, objek ralat konteks.Batal menyediakan cara yang mudah untuk mengesahkan pembatalan. Apabila konteks dibatalkan, sebarang operasi yang dilakukan padanya akan mengembalikan ralat ini. Kod berikut menunjukkan penggunaannya:

// Create a context that is already canceled
ctx, cancel := context.WithCancel(context.Background())
cancel()

// Create the request with it and perform an operation
r, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil)
_, err := http.DefaultClient.Do(r)

// Check if the error matches context.Canceled
if err == context.Canceled {
    // Request was canceled
}
Salin selepas log masuk

2. Gunakan ralat.Is Function:

Jika anda perlu menyokong versi Go sebelum 1.13, anda boleh menggunakan fungsi ralat.Is untuk menyemak konteks bersarang. Ralat dibatalkan. errors.Is membolehkan anda memeriksa rantaian ralat asas dan menentukan sama ada mana-mana ralat sepadan dengan jenis ralat yang ditentukan.

// Create a context that is already canceled
ctx, cancel := context.WithCancel(context.Background())
cancel()

// Create the request with it and perform an operation
r, _ := http.NewRequestWithContext(ctx, "GET", "http://example.com", nil)
_, err := http.DefaultClient.Do(r)

// Check if the error chain contains context.Canceled
if errors.Is(err, context.Canceled) {
    // Request was canceled
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Memeriksa Pembatalan Permintaan dengan Amanah dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan