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!