Walaupun menggunakan async void mungkin kelihatan boleh diterima dalam senario tertentu, seperti contoh rekaan yang anda berikan, ia adalah secara amnya dianggap sebagai amalan buruk kerana beberapa sebab asas.
Salah satu perangkap utama kaedah async void ialah semantik pengendalian ralat yang berbeza. Pengecualian yang terlepas daripada kaedah async void tidak disebarkan secara automatik dan boleh mencabar untuk ditangkap, yang membawa kepada tingkah laku yang tidak dijangka.
Kaedah Async void tidak mempunyai keupayaan untuk digubah menjadi lebih tinggi -kaedah async peringkat. Logik yang terkandung dalam kaedah async void diasingkan, menjadikannya sukar untuk digunakan semula dan disepadukan dengan kod tak segerak yang lain.
Kaedah Async void memberikan cabaran yang ketara untuk ujian. Memandangkan pengecualian tidak disebarkan secara automatik, adalah lebih kompleks untuk menulis ujian unit yang merangkumi kefungsian kaedah dan laluan ralatnya yang berpotensi.
Perlu juga diperhatikan bahawa async void ialah pendekatan yang menyimpang daripada amalan biasa yang diterima pakai oleh bahasa lain yang menyokong pengaturcaraan tak segerak. Bahasa seperti F#, Python, JavaScript dan TypeScript tidak termasuk async void sebagai sebahagian daripada sintaksnya.
Dalam senario khusus yang anda bentangkan, di mana anda tidak berhasrat untuk menunggu hasil operasi async, pendekatan yang lebih sesuai ialah menggunakan pengendali acara void async. Dengan mengubah suai pengendali acara kepada async void, seperti yang ditunjukkan dalam coretan kod yang disediakan dalam respons, anda boleh mengurangkan keburukan yang dikaitkan dengan async void sambil mencapai kefungsian yang diingini.
Atas ialah kandungan terperinci Mengapakah Async Void Dianggap sebagai Amalan Buruk dalam Pengaturcaraan Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!