【问题标题】:While loop not executing inside callbackWhile循环未在回调内部执行
【发布时间】:2019-10-09 02:52:41
【问题描述】:

在承诺的捕获中

.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)
            }
        })
    })

我正在尝试以打开新页面的方式编写 catch,等待它完成加载,然后获取新的 cookie

我觉得我正在服用疯狂的药丸,因为这看起来非常简单。但是它永远不会打印出response.status

我希望它等待每 3 秒检查一次 response.status,一旦页面有 loaded,它将结束循环。

我做错了什么?

【问题讨论】:

标签: javascript


【解决方案1】:

您编写它的方式已经创建了一个无限循环,这会将大量 setTimeouts 放入浏览器的事件队列中。

setTimeout 也将代码放在那里,但它带有“3sec plus”延迟说明。

实际上你告诉你的浏览器 - 为我设置无限超时,完成后,请在 3 秒后执行 console.log。这不会发生。

你应该改用setInterval

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 2014-09-10
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2013-11-17
    • 1970-01-01
    • 2017-11-09
    • 1970-01-01
    相关资源
    最近更新 更多