#javascript #google-chrome-extension
Вопрос:
Я пытался создать расширение, которое отображало бы информацию во всплывающем окне. Он получает эту информацию, отправляя запрос GET по URL-адресу, который я получаю, просматривая запрос с определенной веб-страницы. Чтобы проверить, я просто распечатываю текст запроса.
chrome.webRequest.onCompleted.addListener(
logURL,
{urls: ["<all_urls>"]}
);
function logURL(details) {
var url = details.url;
if (url.startsWith('https://www.whatever.com/api/')) {
httpGet(url);
}
}
function httpGet(apiURL) {
let data;
function setData(dt) {
data = dt;
}
fetch(apiURL)
.then(response => response.json()).then( json => setData(json))
.catch(error => console.error(error))
.finally(() => {
console.log("Data received 1 --> ", data);
data = null;
});
}
Однако он продолжает печатать тело бесконечно. Я не знаю, почему. Я хотел бы знать, как это исправить.
Ответ №1:
Потому что каждый раз, когда веб-запрос завершается, он вызывает logURL, который вызывает HttpGet и запускает новый веб-запрос, который завершается и вызывает logURL и т. Д.
Ответ №2:
Обратный вызов logURL
вызывается по завершении запроса. Это будет продолжаться вечно, потому что по завершении одного запроса вы делаете другой