Javascript 需要一些异步调用的角度设计建议吗
我需要一个帮助来设计一种允许我的Angular组件订阅js包装函数的方法 在下图中,您可以看到流程图 我正在创造一个有角度的正面,它必须与一个我无法触及的现有系统进行对话 该系统管理一个OpenLayer地图,并在其周围有一个JS包装器。我们可以在地图上操作,调用这个包装器,它具有诸如centerMap、refreshMap等功能 当MapManager.js拥有OpenLayer对象时,从其包装器中获取一些请求,调用读取PostGIS数据库的PHP服务器并返回要绘制的元素 为了与这个系统对话,我在Angular中创建了另一个包装器,以便在任何组件中使用它。我需要自己的包装器,因为最初的包装器是用纯JS编写的,我需要一个TS库 这个系统工作得很好。Angular能够在地图上操作。不幸的是,AngularWrapper是来自AngularComponent的同步调用,但不是来自MapManager.js,因为它必须对PHP服务器进行异步调用,所以当我的包装器结束调用时,映射仍在处理数据 例如: 我需要调用一个过滤器资源,然后将地图居中放置到找到的第一个。我需要知道是否没有找到带有过滤器的资源 内部包装器 如您所见,我必须设置一个超时,以等待服务器的异步调用结束。然后我可以调用getCurrentElements来获取过滤器调用的结果,取第一个,然后再次调用原始的_包装器来将OpenLayer映射集中到资源 如果没有超时,getCurrentElements将在调用旧元素之前返回元素。 超时是解决CENTERMAP问题的一个技巧,但AngularComponents仍然不知道发生了什么,也不知道过滤器的结果 在角度组件中,我只需导入函数即可调用过滤器: 组件 有没有一种方法可以创建某种可观察的服务,让角度组件知道发生了什么,或者打开一个包含一些信息的小吃栏?Javascript 需要一些异步调用的角度设计建议吗,javascript,angular,Javascript,Angular,我需要一个帮助来设计一种允许我的Angular组件订阅js包装函数的方法 在下图中,您可以看到流程图 我正在创造一个有角度的正面,它必须与一个我无法触及的现有系统进行对话 该系统管理一个OpenLayer地图,并在其周围有一个JS包装器。我们可以在地图上操作,调用这个包装器,它具有诸如centerMap、refreshMap等功能 当MapManager.js拥有OpenLayer对象时,从其包装器中获取一些请求,调用读取PostGIS数据库的PHP服务器并返回要绘制的元素 为了与这个系统对话,
在我目前的情况下,AngularComponents是不知道的。操作员可以在地图上看到一些更改,但不能看到AngularFrontend。我只需向MapManager开发人员请求回调模式,就成功地解决了问题。 Javascirpt并没有丢失引用,所以我在AngularComponent上创建了一个函数来管理传递给我的包装器的结果,该结果由其他包装器接收,然后传递给MapManager。当mapmanager结束Ajax调用时,调用收到的任何回调
我很幸运,函数引用在内部调用过程中没有丢失。什么是神秘的send方法?它返回什么?它是如何调用东西的?http呼叫?您还知道每个有效的.js文件都是有效的.ts文件,对吗?send方法不会返回任何东西。它只需通过同步调用调用mapmanager.js提供的map对象。例如:setMapCenterlon,lat{this.mapobject.applyRemoteSetCenter,arguments;}
function filterResources(filters)
{
original_wrapper.send("filter",filters);
setTimeout(function()
{
var resources = original_wrapper.send("getCurrentElements",{});
var first_one = array_shift(resources);
original_wrapper.send("centerMap",{ "lat" : first_one.lat, "lon" : first_one.lon" });
}
},1000)
}
import { filterResources } from '....assets/map/internalwrapper';
[...]
applyFilter()
{
var params = {};
[...]
filterResources(params);
}