Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mendapatkan Nilai Pulangan daripada Fungsi Asynchronous JavaScript dengan jQuery?
Sifat tak segerak JavaScript sering menimbulkan cabaran dalam mendapatkan nilai pulangan serta-merta. Dalam konteks ini, pertimbangkan fungsi jQuery yang mendapatkan semula nilai GUID melalui panggilan tak segerak. Walaupun fungsi alert() dalam fungsi memaparkan GUID dengan jayanya, memberikannya kepada pembolehubah dan mengembalikan nilainya telah terbukti sukar difahami oleh banyak pembangun.
Satu pendekatan biasa untuk masalah ini ialah memperkenalkan fungsi panggil balik sebagai parameter. Kaedah ini memastikan bahawa fungsi mengembalikan janji tertunda setelah selesai panggilan tak segerak, membenarkan panggilan balik dilampirkan padanya.
function trackPage() { var elqTracker = new jQuery.elq(459), dfd = $.Deferred(); elqTracker.pageTrack({ success: function() { elqTracker.getGUID(function(guid) { dfd.resolve(guid); }); } }); return dfd.promise(); } // Example usage: trackPage().done(function(guid) { alert("Got GUID: " + guid); });
Dalam contoh ini, fungsi trackPage() kini mengembalikan janji. Fungsi panggil balik boleh dilampirkan menggunakan kaedah done() untuk menerima nilai GUID sebaik sahaja panggilan tak segerak selesai. Berbilang panggilan balik boleh dirantai bersama.
var pageHit = trackPage().done(function(guid) { alert("Page Hit GUID: " + guid); }); $("button").click(function() { pageHit.done(function(guid) { alert("Clicked on Page GUID: " + guid); }); });
Objek $.Deferred yang disediakan oleh jQuery membolehkan pembangun mencipta logik tak segerak mereka sendiri yang mengembalikan janji, memastikan antara muka yang konsisten merentas aplikasi. Modul jQuery lain, seperti AJAX, juga mengembalikan janji, menjadikannya lebih mudah untuk mengendalikan operasi tak segerak dalam JavaScript.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Pulangan daripada Fungsi Asynchronous JavaScript dengan jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!