Код бесконечно повторяется без всякой видимой причины

#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 вызывается по завершении запроса. Это будет продолжаться вечно, потому что по завершении одного запроса вы делаете другой