如何在 jsfiddle 上使用 q promise 2.X 和 requirejs?

how to use q promise 2.X with requirejs on jsfiddle?

这个

requirejs.config({
  paths: { 
    'q' : '//cdnjs.cloudflare.com/ajax/libs/q.js/2.0.3/q.min'
}});

require(['q'], function(Q) {
  console.log("In Loaded callback");
  console.log("Q: %o", Q);
  return {};
});

失败:

Module name "weak-map" has not been loaded yet for context: _. Use require([])
http://requirejs.org/docs/errors.html#notloaded
File: require.min.js, Line: 1, Column: 1948

JSFiddle

然而,这工作正常:

requirejs.config({
  paths: { 
    'q' : '//cdnjs.cloudflare.com/ajax/libs/q.js/1.4.1/q.min'
}});

我查了一下,发现 Q v2 现在是实验性的。在源代码中我们可以看到它依赖于以下库

var WeakMap = require("weak-map");
var iterate = require("pop-iterate");
var asap = require("asap");

这种类型的 require/module 导入适用于 node/browserify。它不支持 require.js。根据文档:-

This is Q version 2 and is experimental at this time. If you install the latest Q from npm, you will get the latest from the version 1 release train.

因此,除非我们在 nodejs/browserify 中使用它,否则此时最好坚持使用 v1。