While循环未在回调内执行

时间:2019-05-22 15:02:59

标签: javascript

在诺言中

.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

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

我在做什么错了?

1 个答案:

答案 0 :(得分:3)

您编写它的方式已经形成了无限循环,这将使大量itemconfigure进入浏览器的事件队列。

setTimeout也将代码放在那里,但是带有“ 3sec plus”延迟提示。

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

您可能应该改用setTimeout