importScripts在Web worker中返回undefined

时间:2015-03-31 05:31:47

标签: javascript promise web-worker

对于早期的浏览器版本,在Web工作者中未定义Promise。如果Promise未定义,我正在使用import polyfill Promise(' Promise.js')。但我仍然得到一个未定义的对象作为回报。

var promise;
if(typeof Promise === undefined) {
  self.importScripts('./Promise.js').Promise;
}

promise = new Promise(function (resolve, reject) {
  var url = ajaxArgs.url || '',
      data = ajaxArgs.data || {},
      type = ajaxArgs.method || 'GET',
      isGet = type === 'GET',
      request = new XMLHttpRequest();
      ........
}

如何为网络工作者开展这项工作?

1 个答案:

答案 0 :(得分:3)

importScripts function不会返回任何内容。当您在调用时访问.Promise属性时,将抛出,并且您的代码将停止执​​行。顺便说一句,typeof永远不会返回undefined,所以你很幸运,它从未被执行过。

if (typeof Promise !== "function") self.importScripts('./Promise.js');

var promise = new Promise(function (resolve, reject) {
    …
});