私のクロム拡張機能では、コンテンツ スクリプトからの応答を取得するまで for ループの処理を停止できる関数をチェックしていました。以下のサンプルコードを共有する
function abc() {
chrome.tabs.query({'status': 'complete'}, function(tabArray) {
for (var i = 0, tab; tab = tabArray[i]; i++) {
var currentUrl = tab.url;
var tabId = tab.id;
if (currentUrl.match(otherthing)) {
chrome.tabs.sendRequest(tabId, {'type': 'getrequiredthing'},
function(response) {
if (response.isrequiredthind) {
callfunction(tabId);
}
}
);
}
}
});
}
ここで一致する URL を取得するelse if
と、ページに情報を取得するためのリクエストを送信します。情報が肯定的である場合は、関数を呼び出す必要があります。しかし、ここでは for ループで tabId が非常に高速に繰り返されており、応答が肯定的であっても、next (または next) の tabId を使用して callfunction を呼び出しています。
これを解決するための意見をお聞かせください。for ループでこの応答が受信されるのを待ちます。
ありがとう