Я хочу воспользоваться функцией обратного вызова загрузчика карт Google, как показано здесь: https://developers.google.com/maps/documentation/javascript/examples/map-simple-async
У меня есть рабочий пример того, как это сделать с использованием AMD и promises. Чтобы загрузить и использовать 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, но не понимаю, как это сделать.