如何从getAllInternetHeadersAsync获取返回值?

如何解决如何从getAllInternetHeadersAsync获取返回值?

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

SELECT o.OpportunityID,n.NotesDate,n.NotesID
FROM Opportunity AS o
LEFT JOIN tblNotes AS n 
    ON  n.OpportunityID = o.OpportunityID
    AND n.NotesDate = (
        SELECT MAX(n1.NotesDate)
        FROM tblNotes n1
        WHERE n1.OpportunityID = o.OpportunityID
    )
ORDER BY o.OpportunityID;

但是,标头似乎并没有被永久设置。第一个console.log显示标题的正确值。但是,最后一个console.log显示标题已恢复为空。如何设置标头,以便在getAllInternetHeadersAsync函数之后仍可以看到标头?

谢谢!

解决方法

仔细查看您的控制台输出。您应该发现,在回调函数内部的console.log("headers = " + headers)输出之前,在代码末尾显示console.log(headers)输出。 像许多Office API函数一样,

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

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

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

这是处理名称中带有Async的每个Office API函数的方法。

正如@JaromandaX在评论中指出的那样,您可以使用Promiseasync / await,但是您必须自己创建Promise作为Office API不会为您执行此操作-它仅使用回调。同样使用async / await会将您限制在支持它的现代浏览器中,或者如果需要支持Internet Explorer,则要求您使用编译器将代码转换为ES5兼容代码。

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

要获取更多阅读信息,可以在网络上搜索asynchronous javascript来找到许多文章,对其进行详细说明。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?