Apabila bekerja dengan tinjauan panjang HTTP menggunakan http.Client, mungkin perlu untuk menamatkan permintaan itu lebih awal daripada pihak pelanggan. Dari segi sejarah, resp.Body.Close() boleh digunakan, tetapi ia memerlukan goroutine yang berasingan untuk dilaksanakan.
Penyelesaian Semasa: Pembatalan Berdasarkan Konteks
Untuk menyelesaikan masalah ini isu, Go kini mengesyorkan menggunakan http.Request.WithContext untuk lulus konteks dengan tarikh akhir atau mekanisme pembatalan. Ini menghapuskan keperluan untuk goroutine tambahan dan menyediakan pendekatan yang lebih bersih dan standard.
Contoh
req, err := http.NewRequest("GET", "http://example.com", nil) req = req.WithContext(ctx) // Pass the context with deadline or cancelation mechanism resp, err := client.Do(req)
Pendekatan ini memberikan kawalan yang lebih besar ke atas pembatalan permintaan, membolehkannya dicetuskan berdasarkan tindakan pengguna atau logik aplikasi lain, bukan hanya tamat masa.
Atas ialah kandungan terperinci Bagaimanakah saya boleh menutup Permintaan POST Klien HTTP Go secara Pramatang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!