【问题标题】:Synchronous request when http-on-modify-request firehttp-on-modify-request 触发时的同步请求
【发布时间】:2014-11-12 20:55:22
【问题描述】:

当“http-on-modify-request”在我的 firefox 插件中触发时,我正在尝试调用 API。

所以现在,这是我的代码:

            Request({
              url: "https://myAPI.com/?q="+query,
              onComplete: function (response) {
                var ioService = Cc["@mozilla.org/network/io-service;1"].getService(Ci.nsIIOService);
                httpChannel.redirectTo(ioService.newURI(response.json.Redirect, null, null));
              }
            }).get();

不幸的是,由于它是异步的,触发观察者的第一个查询已经完成,所以它无法重定向。

还有其他方法可以做到吗?

【问题讨论】:

  • 为什么不中止重定向然后进行重定向?所以就像httpChannel.cancel(Cr.NS_BINDING_ABORTED); 在这里看到:stackoverflow.com/questions/25327282/…
  • 我不能这样做,因为httpChannel会被取消,所以我以后不能重定向它......
  • 你是对的。所以中止频道,然后用新频道替换它。那应该行得通。但实际上:我认为httpChannel.redirectTo 会中止它所做的一切,然后将其发送到其他地方?
  • 谢谢Noitidart,我试过that,但它也不起作用
  • 不要只为 channel.redirect 做 newChannel 喜欢这个话题:stackoverflow.com/questions/25327282/…

标签: ajax sdk firefox-addon request firefox-addon-sdk


【解决方案1】:

您应该定期从myAPI.com 获取重定向列表,然后在本地缓存该列表并在“http-on-modify-request”触发时使用该列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-16
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多