Javascript 如何理解mapbox gl中fire()和send()的设计 我如何获得所有模块之间的关系以及它们如何协同工作?

Javascript 如何理解mapbox gl中fire()和send()的设计 我如何获得所有模块之间的关系以及它们如何协同工作?,javascript,mapbox-gl,mapbox-gl-js,Javascript,Mapbox Gl,Mapbox Gl Js,mapbox gl js版本:v0.28.0 我发现很难为我调试和分析mapbox gl的代码。大多数情况下,fire()和send()用于组织函数调用我发现很难找出哪个函数是callar函数,哪个函数是callee函数。有没有更好的方法可以更有效地理解mapbox gl的设计? 顺便问一下,我在哪里可以找到Mapbox gl的架构图或UML。我相信这会很有帮助的 e、 g this.dispatcher.send('reloadTile',params,done.bind(this),tile

mapbox gl js版本:v0.28.0

我发现很难为我调试和分析mapbox gl的代码。大多数情况下,fire()和send()用于组织函数调用我发现很难找出哪个函数是callar函数,哪个函数是callee函数。有没有更好的方法可以更有效地理解mapbox gl的设计? 顺便问一下,我在哪里可以找到Mapbox gl的架构图或UML。我相信这会很有帮助的

e、 g

this.dispatcher.send('reloadTile',params,done.bind(this),tile.workerID)

this.fire('load')

`

火灾(类型、数据){
if(this.listens(type)){
data=util.extend({},data,{type:type,target:this});
//确保在其他侦听器中添加或删除侦听器不会导致无限循环
const listeners=this.\u listeners&&this.\u listeners[type]?this.\u listeners[type].slice():[];
for(设i=0;i

`

fire
作为实现的一部分,用于在事件发生时提供有关事件的信息
send
用于在辅助线程和主线程之间传输数据,在使用Mapbox GL JS的客户端应用程序中不需要

我们本身没有架构图,但我们正在积极开发有关架构的更详细文档

免责声明-我在Mapbox工作

fire(type, data) {
    if (this.listens(type)) {

        data = util.extend({}, data, {type: type, target: this});

        // make sure adding or removing listeners inside other listeners won't cause an infinite loop
        const listeners = this._listeners && this._listeners[type] ? this._listeners[type].slice() : [];

        for (let i = 0; i < listeners.length; i++) {
            listeners[i].call(this, data);
        }

        if (this._eventedParent) {
            this._eventedParent.fire(type, util.extend({}, data, this._eventedParentData));
        }

    // To ensure that no error events are dropped, print them to the
    // console if they have no listeners.
    } else if (util.endsWith(type, 'error')) {
        console.error((data && data.error) || data || 'Empty error event');
    }

    return this;
}