Rumah > hujung hadapan web > tutorial js > Mengapa Maklumat Tab Sambungan Chrome Saya Kelihatan Kosong Tanpa Titik Putus?

Mengapa Maklumat Tab Sambungan Chrome Saya Kelihatan Kosong Tanpa Titik Putus?

Barbara Streisand
Lepaskan: 2024-10-31 16:49:02
asal
628 orang telah melayarinya

Why Does My Chrome Extension's Tab Information Appear Empty Without Breakpoints?

Panggilan Fungsi Asynchronous: Memahami Kelewatan dalam Mendapatkan Maklumat Tab Chrome

Semasa membangunkan sambungan Chrome, anda menghadapi masalah di mana hasil yang diperoleh melalui chrome.tabs.query telah tidak tersedia apabila kod berjalan tanpa titik putus. Untuk menganalisis isu ini, kami akan menyelidiki sifat tak segerak bagi fungsi chrome.tabs.query.

Panggilan Fungsi Asynchronous

Fungsi tak segerak, seperti chrome.tabs.query, laksanakan kodnya di satu masa kemudian, bebas daripada aliran pelaksanaan utama. Dalam coretan kod anda:

// Initialize an empty array
var fourmTabs = new Array();
// Initiate asynchronous `chrome.tabs.query` call
chrome.tabs.query({}, function (tabs) {
    // Iterate over returned tabs
    for (var i = 0; i < tabs.length; i++) {
        // Store tabs in array
        fourmTabs[i] = tabs[i];
    }
});
Salin selepas log masuk

Apabila kod ini dijalankan, panggilan chrome.tabs.query melaksanakan dan memulakan permintaan, tetapi pelaksanaan JavaScript diteruskan ke baris seterusnya. Fungsi panggil balik yang disediakan sebagai argumen kedua kepada chrome.tabs.query tidak digunakan serta-merta.

// Print tab URLs (before callback has been called)
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 kod di atas, apabila gelung dilaksanakan, tatasusunan fourmTabs masih kosong kerana fungsi panggil balik mempunyai belum dipanggil. Oleh itu, konsol akan mengeluarkan "??" untuk setiap tab.

Dengan titik putus, pelaksanaan kod dijeda, membenarkan fungsi panggil balik untuk melaksanakan dan mengemas kini tatasusunan fourmTabs. Ini memastikan bahawa gelung kedua mempunyai akses kepada maklumat tab yang dikemas kini dan mencetak URL dengan betul.

Menyelesaikan Isu

Untuk menyelesaikan isu ini dan memastikan bahawa tab tersedia apabila kod berjalan tanpa titik putus, gerakkan gelung kedua di dalam fungsi panggil balik chrome.tabs.query. Ini memastikan bahawa gelung dilaksanakan selepas panggilan balik dipanggil:

// Initialize an empty array
var fourmTabs = new Array();
// Initiate asynchronous `chrome.tabs.query` call
chrome.tabs.query({}, function (tabs) {
    // Update `fourmTabs` array
    for (var i = 0; i < tabs.length; i++) {
        fourmTabs[i] = tabs[i];
    }
    // Print tab URLs (after callback has been called)
    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

Dengan pengubahsuaian ini, kod akan berjalan dengan betul tanpa memerlukan titik putus, kerana gelung kedua dilaksanakan hanya selepas tatasusunan fourmTabs telah telah dikemas kini oleh fungsi panggil balik.

Atas ialah kandungan terperinci Mengapa Maklumat Tab Sambungan Chrome Saya Kelihatan Kosong Tanpa Titik Putus?. 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