Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mendapatkan Nilai daripada Fungsi Panggilan Balik Asynchronous dalam JavaScript?
Tidak Dapat Mendapatkan Nilai daripada Fungsi Panggilan Balik Asynchronous
Isu yang biasa dihadapi ini mempunyai banyak urutan pada Stack Overflow. Walaupun carian yang meluas, sesetengah pembangun masih menghadapi kesukaran untuk mengakses nilai daripada panggilan balik.
Cabaran utama terletak pada fakta bahawa kaedah segerak tidak boleh mengembalikan nilai daripada panggilan tak segerak. Seperti yang digambarkan dalam contoh yang disediakan:
function foo(address){ // google map stuff geocoder.geocode( { 'address': address}, function(results, status) { results[0].geometry.location; // I want to return this value }) } foo(); //result should be results[0].geometry.location; value
Percubaan untuk mengembalikan nilai yang diingini secara langsung akan menghasilkan respons "tidak ditentukan". Selepas itu, pengubahsuaian telah dicadangkan tetapi tidak berjaya.
Contoh percubaan sedemikian:
function foo(address){ var returnvalue; geocoder.geocode( { 'address': address}, function(results, status) { returnvalue = results[0].geometry.location; }) return returnvalue; } foo(); //still undefined
Resolusi
Penyelesaian memerlukan lulus panggilan balik kepada fungsi foo, yang kemudiannya akan menerima pulangan nilai:
function foo(address, fn){ geocoder.geocode( { 'address': address}, function(results, status) { fn(results[0].geometry.location); }); } foo("address", function(location){ alert(location); // this is where you get the return value });
Fungsi Tak segerak dan Struktur Panggilan Balik:
Panggilan fungsi dalaman tak segerak memerlukan penggunaan fungsi pembungkusan tak segerak yang sama untuk mendapatkan respons.
Perpustakaan dan Alternatif Pendekatan:
Mengendalikan banyak panggilan balik boleh dipermudahkan melalui penggunaan pustaka janji seperti Q. Rangka kerja ini menyediakan cara yang mudah untuk mengurus operasi tak segerak dan mengakses keputusannya dengan cara yang lebih cekap dan berstruktur.Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai daripada Fungsi Panggilan Balik Asynchronous dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!