iClient 10i 严重回调卡顿

0 投票

new ol.supermap.QueryService(url).queryBySQL(param, function (serviceResult) {
   
});
在使用该接口时,发现网络请求在3秒左右就完成了,但是触发回调方法要15秒到30秒,这个问题怎么解决?
使用的原生html和js,没有用模块化编程。
3月 5 分类:  55次浏览 | 用户: gt 才疏学浅 (12 分)

1个回答

0 投票
你好,请问这边的数据量有多大?
3月 8 用户: johnJJ 学富五车 (670 分)
几百个矢量面,测试发现卡顿是由于引用了官网下载的离线包引起的,使用示例里的在线资源就不会出现这种  网络请求完成,回调却仍旧没执行的情况,官网的离线包是否和示例中的在线资源有所不同?
现在主要问题不是数据量大,而是该方法的回调没有在网络请求完成后立即执行,而用你们官方编辑器里的js资源就不会出现这种情况,用官网下载的离线资源包就一定会出现这种情况。

官网范例是最新的SuperMap iClient包,官网的范例的代码在github上: https://github.com/SuperMap/iClient-JavaScript 

我按照教程的这个地址https://iclient.supermap.io/web/introduction/openlayersDevelop.html#Ready引用资源,无论是在线的,还是下载离线后引用都出现了回调卡顿,但是用这个页面https://iclient.supermap.io/examples/openlayers/editor.html#01_mapQueryBySQL引用的资源来测试,回调就正常了,没有出现延迟执行的情况了。

我测试正常的,方便的话把你的数据和demo给我测试一下,邮箱:jiangwanjun@supermap.com

我用官网China数据源中的点数据集District_A_pt(2000多个点)测试正常,没复现你的情况,建议直接使用下载的iClient包,url: "https://iserver.supermap.io/iserver/services/map-china400/rest/maps/China" ,

 queryParams: {
                name: "District_A_pt@China",
                attributeFilter: "SmUserID = 0"
            }

官网测试:

你的代码测试:


这是本地测试时网络请求所花时间,下面是控制台打印的从请求开始到返回方法被调用的时间

明显能看到中间所花费的时间差距,但是我将代码拷入编辑器里运行,同样读取本地资源,回调执行的时间就和网络请求时间同步了,你用的地图文件我刚刚测试过,回调时间是正常的,但是这种回调和网络请求不同步的现象会不会是只在大数据量上出现?

网络请求只花了2.41秒,但等到回调花了9秒,在网络请求4秒左右的数据量下,等待时间甚至会超过一分钟。
http状态201 (Created/已创建),201 (SC_CREATED)表示服务器在请求的响应中建立了新文档;应在定位头信息中给出它的URL。建议直接使用下载的iClient包使用,你说的这情况我也只能多做测试

可否告知该链接中的https://iclient.supermap.io/examples/openlayers/editor.html#01_mapQueryBySQL
<script type="text/javascript" src="../js/include-web.js"></script>
<script type="text/javascript" src="../../dist/ol/include-ol.js"></script>这两个资源的离线包去哪下载?

...