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

Susan Sarandon
Lepaskan: 2024-10-31 12:36:02
asal
296 orang telah melayarinya

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);
    }
}
Salin selepas log masuk

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
});
Salin selepas log masuk

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!

sumber:php.cn
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