如何从getAllInternetHeadersAsync获取返回值?

编程入门 行业动态 更新时间:2024-10-25 21:22:55
本文介绍了如何从getAllInternetHeadersAsync获取返回值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我创建了一个Office外接程序,我想知道如何使用getAllInternetHeadersAsync获取Internet标头?我有以下代码,它将标题发送到控制台:

var headers = ""; // Get the internet headers related to the mail. Office.context.mailbox.item.getAllInternetHeadersAsync( function(asyncResult) { if (asyncResult.status === Office.AsyncResultStatus.Succeeded) { headers = asyncResult.value; console.log(headers); } else { if (asyncResult.error.code == 9020) { // GenericResponseError returned when there is no context. // Treat as no context. } else { // Handle the error. } } } ); console.log("headers = " + headers);

但是,标头似乎不会永久设置。第一个console.log显示了标头的正确值。然而,最后一个console.log显示标头又恢复为空。如何设置标头以便在getAllInternetHeadersAsync函数之后仍然可以看到它?

谢谢!

推荐答案

仔细查看您的控制台输出。您会发现代码末尾的console.log("headers = " + headers)输出显示在回调函数内部的console.log(headers)输出之前。

getAllInternetHeadersAsync()与许多Office API函数一样,顾名思义,它是一个异步函数。当您调用该函数时,它会在获取标头之前立即返回。因此,函数调用之后的任何代码都将在此时此地执行。但是您还没有标题!

一小段时间后,该函数获取标头并调用您的回调函数。现在您可以访问标题了。但是将这些头文件存储在全局变量中没有任何好处,因为您的其他代码不知道它们什么时候准备好了。

您需要做的是:您需要查看头的任何代码都应该在回调函数中,或者在您从回调代码调用的另一个函数中。这样,您的代码将具有可用的标头。

这是您必须处理名称中包含Async的每个Office API函数的方式。

正如@JaromandaX在注释中指出的那样,您可以使用Promise和async/await,但是您必须自己创建Promise,因为Office API不会为您做这件事-它只使用回调。另外,使用async/await将限制您只能使用支持它的现代浏览器,或者如果您需要支持Internet Explorer,则需要使用编译器将代码转换为ES5兼容的代码。

对于Office API,最简单的方法是坚持使用xyzAsync函数提供的回调系统,并且只访问该回调内的asyncResult.value或从回调内调用的另一个函数。

有关更多阅读信息,请在Web上搜索asynchronous javascript,将找到许多详细说明这一点的文章。

更多推荐

如何从getAllInternetHeadersAsync获取返回值?

本文发布于:2023-10-11 22:26:53,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483017.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:返回值   getAllInternetHeadersAsync

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!