Dalam pengaturcaraan tak segerak, anda sering memerlukan hasil beberapa tugasan yang dijalankan serentak, setiap satu berpotensi mengembalikan jenis data yang berbeza. Mari kita ilustrasikan dengan tiga contoh tugasan:
Cat
.House
.Tesla
.Kami memerlukan semua keputusan sebelum meneruskan. Walaupun pelaksanaan berurutan boleh dilakukan, pelaksanaan serentak adalah jauh lebih cekap. Cabarannya terletak pada pengendalian jenis hasil yang pelbagai.
Task.WhenAll
dan Individu MenantiPenyelesaian melibatkan Task.WhenAll
, yang menunggu semua tugasan yang dibekalkan selesai. Selepas selesai, dapatkan keputusan individu menggunakan await
:
var catTask = FeedCat(); var houseTask = SellHouse(); var carTask = BuyCar(); await Task.WhenAll(catTask, houseTask, carTask); var cat = await catTask; var house = await houseTask; var car = await carTask;
Task.WhenAll
mencipta tugasan ibu bapa yang hanya selesai apabila semua tugasan anak (catTask
, houseTask
, carTask
) selesai. Selepas itu, menunggu setiap tugasan kanak-kanak secara individu mendapatkan semula hasil khususnya.
Atas ialah kandungan terperinci Bagaimanakah saya dapat menanti dengan cekap pelbagai tugas asynchronous dengan pelbagai jenis hasil?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!