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!