【发布时间】:2013-11-13 14:26:02
【问题描述】:
我想利用谷歌地图加载器回调,如下所示: https://developers.google.com/maps/documentation/javascript/examples/map-simple-async
我有一个使用 AMD 和 Promise 的工作示例。加载和使用 API:
require(["path/to/google-maps-api-v3"], function (api) {
api.then(function (googleMaps) {
// consume the api
});
});
这是我的模块 def,我希望它在完全加载后返回 google.maps 而不是延迟:
define(["dojo/Deferred"], function (Deferred) {
var d = new Deferred();
dojoConfig["googleMapsReady"] = function () {
delete dojoConfig["googleMapsReady"];
d.resolve(google.maps);
}
require(["http://maps.google.com/maps/api/js?v=3&sensor=false&callback=dojoConfig.ipsx.config.googleMapsReady&"]);
return d;
});
但解决方案返回一个承诺,而不是完全初始化的 google.maps。我希望它看起来像一个普通的 AMD 模块,但不知道如何。
【问题讨论】:
-
解决方案似乎是创建一个插件:例如gist.github.com/JanMisker/3884283
-
是的,在我开始阅读您的评论之前,我一直在想“AMD 插件”作为答案。编写 AMD 插件可以让您控制模块何时解析,同时仍然能够像任何其他 AMD 模块依赖项一样直接加载它。
标签: google-maps dojo js-amd