我正在使用ChromeWorker从API下载一些数据。 我正在尝试在 myWorker.js 中导入XHR。
importScripts("resource://gre/modules/workers/require.js");
var { XMLHttpRequest } = require("sdk/net/xhr");
运行 cfx run
时出现以下错误Error: TypeError: The argument to require() must be a string uri, got sdk/net/xhr
我正在使用此演示https://github.com/Noitidart/ChromeWorker 如何在 myWorker.js 中导入和使用XMLHttpRequest?
答案 0 :(得分:2)
我修改了我的非工作XHR功能以在ChromeWorker中工作,但它不完美,因为我不知道如何在ChromeWorker版本中设置loadFlags,就像在ChromeWorker版本中没有.channels
一样,很奇怪
https://gist.github.com/Noitidart/ec1e6b9a593ec7e3efed
我的功能使用了一个承诺方案,但你可以不用这样做:
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