Aurelia 与蓝鸟 Promise.join

Aurelia with Bluebird Promise.join

我可以让 Bluebird js 在最基本的 Promise 场景中与 Aurelia 一起工作:创建一个 promise 并在调用 resolve() 时发生 alert()。

但是当我尝试调用其他 promise 函数(例如 .join)时,我得到“_Promise.join 不是一个函数”。谁能提供一些见解?这是一个代码片段。

import {bluebird} from '../jspm_packages/bluebird.min.js';

...

activate(){
    test.then(function(){alert('promise returned')};
}

test(){
     return Promise.join(
        new Promise(function(resolve){resolve();}),
        function(){alert('join finished');}
     );
}

看起来你的 Promise 不是来自 bluebird。 jspm_packages中真的有bluebird.min.js吗? 无论如何尝试在 system.js 之前将其添加到 index.html 中,例如:

...
<script src="jspm_packages/github/petkaantonov/bluebird@2.9.27/js/browser/bluebird.js"></script>
<script src="jspm_packages/system.js"></script>
...

此外,当你导入一些脚本时,不要使用 .js 扩展,做 import $ from './jquery'

我查看了 bluebird.js 的源代码,发现了这个:

module.exports = function(Promise) {
....

所以我将导入语句更改为:

import {Promise} from '../jspm_packages/bluebird.min';

并且 .join 函数现在可以使用了。