【发布时间】:2018-10-10 15:30:34
【问题描述】:
我最近一直在使用 Javascript 中的 Promises,但我很难理解这里到底发生了什么。
正在使用initMap 回调设置 Google 地图脚本 URL。所以当谷歌地图完成加载时,这个回调就会触发。
依次调用resolveFunc()。 resolvefunc() 在承诺中设置,但我没有得到这部分:
resolveFunc = resolve;
设置它等于resolve函数有什么用?
<script>
var resolveFunc = null;
var promise = new Promise(function(resolve, reject) {
resolveFunc = resolve;
});
promise.then(function() {
console.log('loaded');
});
function initMap() {
resolveFunc();
}
</script>
<script src="https://maps.googleapis.com/maps/api/js?callback=initMap" async defer></script>
【问题讨论】:
-
或许更好理解:
var promise = new Promise(resolve => { window.initMap = resolve; }) -
你了解 JSONP 的工作原理吗?
-
是的,在查看了这一切并在 cmets 的帮助下,我明白现在会发生什么。
标签: javascript google-maps ecmascript-6 promise