繁体   English   中英

Thunderbird 扩展意外停止执行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM