Javascript 获取异步变量返回空
我正在尝试为outlook windows应用程序创建外接程序。 下面的代码应该将电子邮件正文复制到剪贴板,但它不会这样做。 我需要按两次运行按钮才能复制内容,但我需要从第一次复制内容! 我的代码有什么问题Javascript 获取异步变量返回空,javascript,node.js,outlook-web-addins,yeoman-generator,Javascript,Node.js,Outlook Web Addins,Yeoman Generator,我正在尝试为outlook windows应用程序创建外接程序。 下面的代码应该将电子邮件正文复制到剪贴板,但它不会这样做。 我需要按两次运行按钮才能复制内容,但我需要从第一次复制内容! 我的代码有什么问题 var messageBody = ""; export async function run() { Office.context.mailbox.item.body.getAsync( Office.CoercionType.Text,
var messageBody = "";
export async function run() {
Office.context.mailbox.item.body.getAsync(
Office.CoercionType.Text,
function (asyncResult) {
if (asyncResult.status !== Office.AsyncResultStatus.Succeeded) {
messageBody = asyncResult.error;
} else {
messageBody = asyncResult.value;
}
});
copyToClipboard(messageBody)
}
function copyToClipboard(text) {
var copyhelper = document.createElement("input");
copyhelper.className = 'copyhelper'
document.body.appendChild(copyhelper);
copyhelper.value = text;
copyhelper.select();
document.execCommand("copy");
document.body.removeChild(copyhelper);
}
您可以将
copyToClipboard(messageBody)
放入函数(asyncResults){…}
中,我建议您阅读以下内容:因为异步计时的问题已经在这里讨论过了。基本上,您的函数run()
在检索异步值之前返回,因此您尝试在函数中包含值之前使用messageBody
。您将需要使用回调、承诺或事件来传回异步结果,或者您可以在检索到异步结果的回调中使用异步值。您可以将copyToClipboard(messageBody)
放入函数(asyncResults){…}
我建议阅读以下内容:因为异步计时的问题已经在这里讨论过了。基本上,您的函数run()
在检索异步值之前返回,因此您尝试在函数中包含值之前使用messageBody
。您将需要使用回调、承诺或事件返回异步结果,或者您可以在检索异步结果的回调中使用异步值。