Excel for Mac JS加载项HTTP请求超时

时间:2017-05-04 17:26:06

标签: javascript excel office365 office-js

我正在使用Excel js加载项。该加载项使用ajax进行多次rest api调用。特别是一个人可能需要一些时间来回应(在这种情况下超过10分钟)。它在Excel Online中正常工作 - 接收并显示响应。 Excel for Mac似乎在1分钟后有超时(或某事)影响请求。它返回状态代码0,我们的服务器抛出499(客户端取消请求)。

Office for Mac中是否有超时,如果有,是否有办法更改它?向ajax请求添加超时字段无效。

1 个答案:

答案 0 :(得分:0)

我认为这与Lengthy HTTP calls failing in TaskPane apps on Office for Mac Client的问题相同。 WebKit控件Office使用的默认超时为60秒。无法从我们的结尾覆盖默认超时。我尝试了以下代码,该代码适用于10分钟的请求:

var xhr = new XMLHttpRequest();
var startDate = new Date();
xhr.open('POST', url, true);

xhr.timeout = 800000; // time in milliseconds

xhr.onload = function () {
  console.log((new Date() - startDate) + " milliseconds to return.");
};

xhr.ontimeout = function (e) {
  console.error("error");
};

xhr.send("data");

请注意,现在已经修复了一个WebKit回归,它破坏了设置超时属性。您将需要最新版本的Safari。此外,jQuery超时属性不起作用,因为它们实际上并未设置WebKit侦听的本机XMLHttpRequest :: timeout属性。如果您使用第三方库来发出请求,请确保它正确设置XMLHttpRequest超时。