Javascript 如何使变量在初始化后可见?

Javascript 如何使变量在初始化后可见?,javascript,Javascript,我有以下初始化映射并返回DOM容器的代码: async function initialize(config, container) { var map = await initializeMap(config, container); } 我可以使用上面的方法创建一些实例 下面还有另一个函数,可以访问map变量: function edit() { map.api.edit({ }); } 当我有一些映射时如何做?要将映射从一个函数传递到另一个函数,最好的方法是返回

我有以下初始化映射并返回DOM容器的代码:

async function initialize(config, container) {
    var map = await initializeMap(config, container);
}
我可以使用上面的方法创建一些实例

下面还有另一个函数,可以访问
map
变量:

 function edit() {
      map.api.edit({ });
 }

当我有一些映射时如何做?

要将
映射从一个函数传递到另一个函数,最好的方法是返回映射或使用类/对象

如果您可以这样做,这将很容易:

异步函数初始化(配置,容器){ var map=wait initializeMap(配置,容器); 返回图; } 功能编辑(地图){ map.api.edit({}); }

类映射管理器{
构造函数(){
this.map=未定义;//不需要lol
}
异步初始化(配置、容器){
this.map=wait initializeMap(配置,容器);
}
编辑(){
map.api.edit({});
}
}
var map_manager=new MapManager();
映射管理器。初始化(我的配置,分区容器)
。然后(()=>map_manager.edit());
请注意,
edit
initialize
未完成或等待
initialize
完成时失败(正在创建承诺),这可能很有趣

否则,如果不能这样做,则必须使用全局变量

var映射;
异步函数初始化(配置,容器){
map=wait initializeMap(配置,容器);
}
函数编辑(){
map.api.edit({});
}

如果可能,避免使用最后一种方法,因为它会禁止您制作多个贴图。在调用edit之前,请小心等待初始化完成,否则会得到意外的结果。要将
映射从一个函数传递到另一个函数,最好的方法是返回映射或使用类/对象

如果您可以这样做,这将很容易:

异步函数初始化(配置,容器){ var map=wait initializeMap(配置,容器); 返回图; } 功能编辑(地图){ map.api.edit({}); }

类映射管理器{
构造函数(){
this.map=未定义;//不需要lol
}
异步初始化(配置、容器){
this.map=wait initializeMap(配置,容器);
}
编辑(){
map.api.edit({});
}
}
var map_manager=new MapManager();
映射管理器。初始化(我的配置,分区容器)
。然后(()=>map_manager.edit());
请注意,
edit
initialize
未完成或等待
initialize
完成时失败(正在创建承诺),这可能很有趣

否则,如果不能这样做,则必须使用全局变量

var映射;
异步函数初始化(配置,容器){
map=wait initializeMap(配置,容器);
}
函数编辑(){
map.api.edit({});
}

如果可能,避免使用最后一种方法,因为它会禁止您制作多个贴图。在调用edit之前,请小心等待初始化完成,否则您将从哪里调用
edit
,得到意外的结果?尝试将其移动到
initialize
函数中。您应该在异步函数之后做出自己的承诺并
resolve(map)
,然后调用edit作为承诺。然后我从click by元素调用edit(),如何从click访问它?您能否解释更多,如何使用承诺解决它?是的,我可以将edit()移动到初始化中。但是如何从DOM调用它呢?从哪里调用
edit
?尝试将其移动到
initialize
函数中。您应该在异步函数之后做出自己的承诺并
resolve(map)
,然后调用edit作为承诺。然后我从click by元素调用edit(),如何从click访问它?您能否解释更多,如何使用承诺解决它?是的,我可以将edit()移动到初始化中。但是如何从DOM调用它呢?在第一个exmaple中,您从initialize返回map,然后如何在edit中获得它<代码>哦,你参加了一个按钮活动!然后,您必须为按钮创建一个变量(可能是全局变量)。然后,可以使用辅助函数
函数button_handler(){var map=…;button_map=map;}
。也许
可以工作。然后,当按下按钮进行编辑时,只需在从initialize返回地图的第一个exmaple中执行
,然后如何在edit中获取地图<代码>哦,你参加了一个按钮活动!然后,您必须为按钮创建一个变量(可能是全局变量)。然后,可以使用辅助函数
函数button_handler(){var map=…;button_map=map;}
。也许
可以工作。然后,当按下按钮进行编辑时,只需执行