javascript - While 循环未在回调内执行

标签 javascript

在 promise 的捕获范围内

.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,一旦页面加载,它将结束循环。

我做错了什么?

最佳答案

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

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

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

您可能应该使用setInterval 来代替

关于javascript - While 循环未在回调内执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56259834/

相关文章:

javascript - 使用mootools Fx修改div的缩放

javascript - 在 Firefox 扩展的 contentScriptFile 中创建新函数

javascript - 循环遍历 jquery data() 对象以获取键和值

javascript - 在浏览器中,如何在预印纸上进行排版准确的打印?

javascript - Angular JS 错误 : $injector:nomod Module Unavailable during routing

javascript - 如何获取 limit 和降序 created_At 返回的项目索引

javascript - javascript确认对话框返回true后如何触发服务器端按钮的点击事件

javascript - HTML 选择下拉列表如何显示 VALUE/ID 而不是文本

javascript - Angular2 和 jQuery 'change' 事件

javascript - 如何显示 ajax 数据库查询的结果?