![](/img/trans.png)
[英]Javascript on Firefox stops execution unexpectedly on an onchange assignment
[英]Thunderbird extension unexpectedly stops execution
我在 Thunderbird 中构建的扩展中发生了一些奇怪的事情。 我已经把它指向一个非常具体的例子。 此示例在常规 node.js 环境中运行良好,但在 Thunderbird 中,它只是在随机时间点停止执行(看起来与时间有关)。
我在 for 循环中使用 await 命令,但 for 循环永远不会到达末尾。 如果我删除 await 命令,它工作正常。
我在想 MailExtensions API 可能存在某种时间限制? 不知道在这里做什么。
这是代码:
async function load() {
let tmp;
for (var i = 0; i < 30; i++) {
console.log(`i: ${i}, before the await`);
tmp = await resolveAfterTimeout();
console.log(`i: ${i}, after the await`);
};
console.log('done');
}
function resolveAfterTimeout() {
console.log('inside timeout');
return new Promise(resolve => {
console.log('inside new Promise');
setTimeout(() => {
console.log('inside setTimeout');
resolve('resolved');
}, 100);
});
}
控制台输出(结束):
i: 5, after the await
i: 6, before the await
inside timeout
inside new Promise
inside setTimeout
i: 6, after the await
i: 7, before the await
inside timeout
inside new Promise
inside setTimeout
i: 7, after the await
i: 8, before the await
inside timeout
inside new Promise
Webconsole context has changed
在惊人的雷鸟论坛聊天成员的帮助下解决了问题! 看起来这完全是我的错 - 扩展程序由弹出窗口激活并在弹出窗口打开时运行。 我会单击一个按钮打开弹出窗口并切换到控制台以查看输出,同时实际上关闭弹出窗口并对执行停止的原因感到惊讶:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.