Пока цикл не выполняется внутри обратного вызова

Внутри улова обещания

.catch((message) => {
        console.log(message)
        var newUrl = url
        chrome.tabs.create({url: newUrl}, function(response) {
            console.log(response.status)
            status = 'loading'
            while (status == 'loading') {
                setTimeout(function() {
                    console.log(response.status)
                    status = response.status
                }, 3000)
            }
        })
    })

Я пытаюсь написать улов так, чтобы он открывал новую страницу, ждал, пока она загрузится, а затем брал новые файлы cookie.

Я чувствую, что принимаю сумасшедшие таблетки, так как это кажется очень прямолинейным. Однако его никогда не распечатывают response.status

Я хочу, чтобы он ждал проверки response.status каждые 3 секунды, и как только на странице появится loaded, цикл завершится.

Что я делаю неправильно?

Наверное это->stackoverflow.com/a/37728255/909535 ?

meteor 22.05.2019 17:07

ооооо, я не привык к Javascript .... это имеет смысл

Morgan Allen 22.05.2019 17:12

Возможный дубликат Метод setTimeout() внутри цикла while

Federico klez Culloca 22.05.2019 17:18
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Сравнение структур данных: Массивы и объекты в Javascript
Сравнение структур данных: Массивы и объекты в Javascript
Итак, вы изучили основы JavaScript и хотите перейти к изучению структур данных. Мотивация для изучения/понимания Структур данных может быть разной,...
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Создание собственной системы электронной коммерции на базе Keystone.js - настройка среды и базовые модели
Прошлая статья была первой из цикла статей о создании системы электронной коммерции с использованием Keystone.js, и она была посвящена главным образом...
Приложение для отслеживания бюджета на React js для начинающих
Приложение для отслеживания бюджета на React js для начинающих
Обучение на практике - это проверенная тема для достижения успеха в любой области. Если вы знаете контекст фразы "Практика делает человека...
Стоит ли использовать React в 2022 году?
Стоит ли использовать React в 2022 году?
В 2022 году мы все слышим о трендах фронтенда (React, Vue), но мы не знаем, почему мы должны использовать эти фреймворки, когда их использовать, а...
2
3
54
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

То, как вы написали это, вы создали бесконечный цикл, который поместит тонны setTimeout в очередь событий браузера.

setTimeout также поместил код туда, но он ставит его с задержкой «3 секунды плюс».

На практике вы говорите своему браузеру - установите для меня бесконечные тайм-ауты, а после его завершения сделайте console.log через 3 секунды. Этого не произойдет.

Вместо этого вам, вероятно, следует использовать setInterval

Другие вопросы по теме