Rumah  >  Artikel  >  hujung hadapan web  >  Mengapa Keputusan `chrome.tabs.query()` Saya Tidak Boleh Dicapai?

Mengapa Keputusan `chrome.tabs.query()` Saya Tidak Boleh Dicapai?

Susan Sarandon
Susan Sarandonasal
2024-10-31 12:36:02294semak imbas

Why Are My `chrome.tabs.query()` Results Inaccessible?

Selepas Memanggil chrome.tabs.query, Keputusan Nampak Tidak Boleh Dicapai

Apabila cuba mengakses hasil chrome.tabs.query() , pembangun mungkin menghadapi tingkah laku yang tidak dijangka di mana keputusan kelihatan tidak tersedia. Isu ini berpunca daripada sifat tak segerak pertanyaan.

Dalam pengaturcaraan tak segerak, fungsi beroperasi di luar urutan utama pelaksanaan. Oleh itu, gelung utama boleh terus melaksanakan kod semasa fungsi tak segerak masih berjalan.

Untuk menggambarkan ini, pertimbangkan contoh berikut:

var fourmTabs = new Array();
chrome.tabs.query({}, function (tabs) {
    for (var i = 0; i < tabs.length; i++) {
        fourmTabs[i] = tabs[i];
    }
});

for (var i = 0; i < fourmTabs.length; i++) {
    if (fourmTabs[i] != null)
        window.console.log(fourmTabs[i].url);
    else {
        window.console.log("??" + i);
    }
}

Dalam kes ini, gelung for mengikuti pertanyaan akan dilaksanakan sebelum fungsi panggil balik yang diberikan kepada tabs.query telah menyelesaikan pelaksanaannya. Akibatnya, hasil pertanyaan belum lagi tersedia dalam gelung.

Untuk menyelesaikan isu ini, kod yang bergantung pada hasil pertanyaan harus diletakkan di dalam fungsi panggil balik. Contohnya:

var fourmTabs = new Array();
chrome.tabs.query({}, function (tabs) {
    for (var i = 0; i < tabs.length; i++) {
        fourmTabs[i] = tabs[i];
    }
    // Code relying on the query results here
});

Dengan mengalihkan kod yang menggunakan hasil pertanyaan ke dalam fungsi panggil balik, kami memastikan ia hanya akan dilaksanakan sebaik sahaja keputusan tersedia, menghapuskan isu.

Atas ialah kandungan terperinci Mengapa Keputusan `chrome.tabs.query()` Saya Tidak Boleh Dicapai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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