我需要一个函数只有在定义了一个对象之后才能执行,我目前正在使用 fascade 模式,一种方法依赖于另一种方法。在这种情况下,“addNewLayer”失败,因为“setFullMap”尚未完成执行。有解决办法吗?我正在使用 jquery 和 vanilla js,所以此时大多数解决方案都会有所帮助:
var jen = (function(){
function setFullMap(mapID){
jen.map = new Map(mapID);
}
function setLayer(opt){
//execute code here after jen.map is defined
}
return{
samp: function(id, opt){
setFullMap(id);
addNewLayer(opt);
}
};
})();
谢谢
解决方案:
var jen = (function(){
function setFullMap(mapID, callback) {
jen.map = new Map(mapID);
if(jen.map){
callback();
}
}
return {
samp: function(id, opt){
setFullMap(id, function(){
addNewLayer(opt);
}.bind(this));
}
};
})();