Memulangkan Nilai daripada Fungsi Panggilan Balik Asynchronous
Dalam pengaturcaraan, adalah perkara biasa untuk menghadapi senario di mana data yang diperoleh daripada panggilan balik tak segerak diperlukan untuk dihantar ke operasi seterusnya. Soalan ini meneroka cara untuk mengembalikan nilai daripada panggilan balik sedemikian, menangani isu khusus dalam coretan kod yang disediakan.
Sampel kod cuba mengembalikan hasil permintaan geokod daripada fungsi panggil balik. Walau bagaimanapun, nilai yang dikembalikan masih tidak ditentukan. Ini kerana panggilan balik dilaksanakan secara tak segerak selepas fungsi dikembalikan.
Pelaksanaan Asynchronous dan Synchronous Returns
Dalam JavaScript, masalahnya terletak pada sifat pelaksanaan tak segerak. Fungsi panggil balik, seperti yang digunakan dalam contoh, dilaksanakan apabila data tersedia, mungkin lebih lewat daripada panggilan fungsi asal. Ini bermakna sebarang penyataan pemulangan dalam fungsi panggil balik tidak akan menjejaskan nilai pemulangan fungsi asal.
Melalui Panggilan Balik untuk Data Tak Segerak
Untuk mengendalikan pengambilan data tak segerak dengan berkesan , pendekatan biasa ialah menghantar fungsi panggil balik kepada fungsi tak segerak. Fungsi panggil balik ini akan digunakan apabila data tersedia dan boleh digunakan untuk mengendalikan nilai yang dikembalikan.
Dalam coretan kod, fungsi foo boleh diubah suai untuk menerima fungsi panggil balik:
function foo(address, callback) { geocoder.geocode({ 'address': address }, function(results, status) { callback(results[0].geometry.location); }); }
Kini, penggunaan foo boleh dilaraskan untuk menerima nilai yang dikembalikan melalui panggilan balik:
foo("address", function(location) { alert(location); // This is where you get the return value });
Ini pendekatan memastikan bahawa nilai pulangan diterima melalui panggilan balik apabila data tak segerak diambil.
Alternatif dan Perpustakaan Janji
Untuk senario yang lebih kompleks yang melibatkan berbilang panggilan balik, pertimbangkan untuk menggunakan perpustakaan janji seperti Q. Perpustakaan ini menyediakan mekanisme untuk mengurus operasi tak segerak dan mendapatkan lebih banyak keputusan cekap.
Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Nilai daripada Fungsi Panggilan Balik Asynchronous dalam JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!