如何在Firefox SDK中设置请求超时时间?

3

我正在尝试从Firefox插件中发起POST请求

var Request = require("sdk/request").Request; 
Request({
 url: "http://127.0.0.1/api",
 content:    "test",
 onComplete: function (response) {
 console.error("onComplete " + response.status);
 }
}).post();

但是onComplete从未运行。我该如何解决这个问题?设置network.http.response.timeout = 5无效。
1个回答

2

您无法使用插件SDK实现此操作。SDK没有.timeout选项。

您可以直接使用nsIXMLHttpRequest进行解决。

var {XMLHttpRequest} = require("sdk/net/xhr/");
var req = new XMLHttpRequest();
// OR
var {Cc, Ci} = require("chrome");
var req = Cc["@mozilla.org/xmlextras/xmlhttprequest;1"]
  .createInstance(Ci.nsIXMLHttpRequest);
// AND
req.timeout = 5;
req.addEventListener("load", ...);
req.addEventListener("timeout", ...);
req.addEventListener("error", ...);
...

请注意,您可以使用net/xhr代替require("chrome"); - nmaier

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接