我正在升级一个JSF页面,该页面显示了带有OSM底图的地图上的数据以及用于标记和功能的最新稳定的单张发布。
对于每个标记,我有一些基本信息,用于创建标记时加载的元素。但是,在用户实际点击弹出窗口之前,有些日子需要显示我不想加载的数据,因为我希望它可以创建比必要的更大的负载。
有没有办法使用承诺首先加载所需的额外数据,然后在用户点击它后打开弹出窗口?
答案 0 :(得分:0)
这个问题的答案非常简单......
您可以通过执行以下操作开始创建标记:
function onMapClick(e){
dataPromise = new Promise(function(resolve,reject){ /*grab your data here*/ });
dataPromise.then(function(result){
popupPromise = new Promise(function(resolve,reject){
e.target.closePopup();
e.target.unbindPopup();
newPopup = createPopupFromServerData(result);
resolve(newPopup);
});
});
popupPromise .then(function(result){
e.target.bindPopup(result).openPopup();
});
}
marker.bindPopup("Loading element data, please wait..."); //this can include anything
marker.on('click', onMapClick);
这是正确开放新Popup所需的第二个承诺,它让我逃脱了两天。