我正在开发 Outlook 加载项。但我得到的问题是有时 Office.context.mailbox.item.body.getAsync 在加载项页面重新加载时会失败。最糟糕的是,一旦 body.getAsync 返回错误“APICallFailedDueToItemChange”,body.getAsync 将始终失败并出现相同的错误。此错误的详细信息是 {name: "APICallFailedDueToItemChange", message: "The selected item has been changed.", code: 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 也应该可以正常工作,但实际上永远不会清除异常。