有没有办法创建在加载Google Maps Javascript API时解决的承诺?

x-y*_*uri 6 javascript google-maps google-maps-api-3 promise deferred

Google Maps Javascript API应该以这种方式加载:

<script>
  function initMap() {
    console.log('loaded');
  }
</script>
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap" async defer></script>
Run Code Online (Sandbox Code Playgroud)

如果我不得不回答我的问题,我会这样做:

var googleAPILoadedPromise = Promise.pending();
function initMap() {
  googleAPILoadedPromise.resolve();
}
googleAPILoadedPromise.promise.then(function() {
  console.log('loaded');
});
Run Code Online (Sandbox Code Playgroud)

但是延迟被弃用并且可能被认为是反模式,至少在蓝鸟中是这样.有没有更好的方法?

x-y*_*uri 4

再想一想,我会这样做:

<script>
  var resolvePromise = null;
  var promise = new Promise(function(resolve, reject) {
    resolvePromise = resolve;
  });
  promise.then(function() {
    console.log('loaded');
  });
</script>
<script src="https://maps.googleapis.com/maps/api/js?callback=resolvePromise" async defer></script>
Run Code Online (Sandbox Code Playgroud)