Firefox 插件 - 如何在 Chromeworker 中使用 XMLHttpRequest?

Firefox addon - how to use XMLHttpRequest in Chromeworker?

我正在使用 ChromeWorker 从 API 下载一些数据。 我正在尝试在 myWorker.js.

中导入 XHR

importScripts("resource://gre/modules/workers/require.js"); var { XMLHttpRequest } = require("sdk/net/xhr");

我在 运行ning cfx 运行

时收到以下错误
Error: TypeError: The argument to require() must be a string uri, got sdk/net/xhr

我正在使用这个演示 https://github.com/Noitidart/ChromeWorker 如何在 myWorker.js 中导入和使用 XMLHttpRequest?

我修改了我的非工作 XHR 函数以在 ChromeWorker 中工作,但它并不完美,因为我不知道如何在 ChromeWorker 版本中设置 loadFlags,因为 ChromeWorker 版本没有 .channels,很奇怪.

https://gist.github.com/Noitidart/ec1e6b9a593ec7e3efed

我的函数使用了一个 promise 方案,但你也可以不这样做:

var aOptions = {
responseType: 'text'
}
var aStr = 'http://www.bing.com/';
let xhr = new XMLHttpRequest();
let evf = f => ['load', 'error', 'abort'].forEach(f);
    if (aOptions.aPostData) {
        xhr.open('POST', aStr, true);
        //xhr.channel.loadFlags |= aOptions.aLoadFlags; // i dont know how to do this from ChromeWorker yet
        xhr.responseType = aOptions.aResponseType;
        xhr.send(aOptions.aPostData);       
    } else {
        xhr.open('GET', aStr, true);
        //xhr.channel.loadFlags |= aOptions.aLoadFlags; // i dont know how to do this from ChromeWorker yet
        xhr.responseType = aOptions.aResponseType;
        xhr.send(null);
    }

跳转到 moz js-ctypes irc 频道以获得更多帮助:) irc://moznet/jsctypes