我正在构建一个商店定位器并通过 require 加载一个自定义模块。自定义模块依赖于微软的 Directions & Search 模块。我讨厌回调地狱,并希望在加载所有内容后预加载模块返回自定义模块的承诺和操作。
将 bluebird 用于 Promise 规范,我尝试了几种方法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
任何人都可以指出最新代码中的明显错误或以承诺方式加载模块的伪代码示例。