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
Susan Sarandonasal
2024-11-08 17:29:01774semak imbas

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
}

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
}

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!

Kenyataan:
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