我建立一个商店定位器和加载自定义模块通过需要。 自定义模块依赖于地图和搜索模块从微软。 我讨厌回调地狱,要预先加载完成所有加载的模块返回一个承诺和行动自定义模块上。
使用蓝鸟的承诺规范,我试过几种方法Promise.method
, Promise.promisify
, new Promise(function(resolve, reject){Microsoft.Maps.loadModule({callback:resolve})})
我似乎无法到得到任何他们的工作。
我的最新执行:
function loadSearch() {
var resolver = Promise.defer();
Microsoft.Maps.loadModule('Microsoft.Maps.Search', {
callback: resolver.resolve
});
return resolver.promise;
} /* end loadSearch */
function loadDirections() {
var resolver = Promise.defer();
Microsoft.Maps.loadModule('Microsoft.Maps.Directions', {
callback: resolver.resolve
});
return resolver.promise;
}
Promise.all([loadSearch(), loadDirections()], function() {
//do something
});
结果Uncaught TypeError: Cannot read property '_tryFollow' of undefined bluebird.js
任何人都可以指出什么在最新的代码明显的错误或在承诺的方式加载模块一个伪代码示例。