Bagaimana untuk Mendapatkan Nilai Asynchronous dalam JavaScript dengan jQuery?

Susan Sarandon
Lepaskan: 2024-10-22 07:44:02
asal
657 orang telah melayarinya

How to Retrieve Asynchronous Value in JavaScript with jQuery?

Pendapatan Nilai Tak Segerak dalam JavaScript dengan jQuery

Dalam JavaScript, mengurus kod tak segerak boleh mencabar, terutamanya apabila cuba mendapatkan semula dan menetapkan nilai pulangan . Pertimbangkan fungsi jQuery berikut:

<code class="javascript">function trackPage(){
    var elqTracker = new jQuery.elq(459);
    elqTracker.pageTrack({
        success: function() {
            elqTracker.getGUID(function(guid) {
                alert(guid);
                var returnValue = guid;
            });
        }
    });
    return returnValue;
}

var someGuid = trackPage();</code>
Salin selepas log masuk

Sementara fungsi alert() memaparkan nilai GUID dengan betul, memberikannya kepada pembolehubah, someGuid, menghasilkan nilai yang tidak ditentukan. Ini disebabkan oleh sifat tak segerak kaedah getGUID() jQuery.

Sifat Panggilan Asynchronous

Panggilan tak segerak, seperti dalam contoh, laksanakan secara bebas daripada aliran program utama. Apabila kaedah getGUID() dipanggil, ia dilaksanakan serta-merta dan kembali sebelum keputusannya tersedia. Akibatnya, pembolehubah returnValue ditetapkan tidak ditentukan.

Penyelesaian Alternatif

Untuk menangani isu ini, beberapa pendekatan boleh digunakan:

1. Fungsi Panggilan Balik

Fungsi panggil balik, seperti yang dicadangkan oleh dfsq, menyediakan mekanisme untuk menghantar fungsi yang akan menerima hasil panggilan tak segerak. Walau bagaimanapun, pendekatan ini boleh menjadi berbelit apabila berbilang fungsi panggil balik bersarang diperlukan.

2. jQuery $.Deferred

objek $.Deferred jQuery membenarkan logik tak segerak tersuai untuk mengembalikan janji. Janji membolehkan panggilan balik dilampirkan pada hasil panggilan tak segerak tanpa memerlukan sarang dalam. Kod yang dikemas kini di bawah menunjukkan pendekatan ini:

<code class="javascript">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 use:
trackPage().done(function( guid ) {
    alert( "Got GUID:" + guid );
});</code>
Salin selepas log masuk

Melampirkan panggilan balik pada janji memberikan lebih fleksibiliti dan membolehkan kod yang lebih teratur. Dengan mengembalikan janji, kod lain juga boleh menggunakan dan menunggu keputusan panggilan tak segerak.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Nilai Asynchronous dalam JavaScript dengan jQuery?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!