当mailbox.item.body.getAsync失败时,如何从错误9030中恢复?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (23)

我正在研究outlook插件。但是我得到的问题是,当重新加载加载项页面时,Office.context.mailbox.item.body.getAsync有时会失败。最糟糕的是,一旦body.getAsync返回错误“APICallFailedDueToItemChange”,body.getAsync将始终以相同的错误失败。此错误的详细信息是{name:“APICallFailedDueToItemChange”,消息:“所选项目已更改。”,代码:9030}

我试图回忆起getAsync,甚至重新加载整个窗口以重新启动加载项,但错误将持续发生。唯一的方法是切换到另一封电子邮件。

重现步骤:1。创建任何outlook添加,其中尝试获取电子邮件正文2.加载加载后,重新加载加载项窗口3.一旦9030错误发生,控制台中的那些代码将始终触发相同的错误,直到我切换到另一封电子邮件

await new Promise((resolve, reject) => {
    window.Office.context.mailbox.item.body.getAsync('text', (result) => {
      if (result.status === 'succeeded') {
        console.log(result.value)
        return resolve(result.value); // updated as suggested by Mavi Domates
      } else {
        console.error(result.error)
        return reject(result.error);
      }
    })
  })

我希望即使前一个回调失败,getAsync也能正常工作,但实际上异常永远不会被清除。

提问于
用户回答回答于

请修改你的代码,你实际上并没有做任何承诺。

await new Promise((resolve, reject) => {
    return window.Office.context.mailbox.item.body.getAsync('text', (result) => {
      if (result.status === 'succeeded') {
        console.log(result.value);
        return resolve(result.value);
      } else {
        console.error(result.error);
        return reject(result.error);
      }
    })
  })

扫码关注云+社区

领取腾讯云代金券