经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
arcgis api for js回调函数如何等待同步
来源:cnblogs  作者:俞亮九段  时间:2021/12/15 9:02:59  对本文有异议

arcgis js开发往往会遇到同步异步的问题,有可能在上一步使用了arcgis js模块回调函数,下一步需要用上一步回调函数的结果,但是因为JavaScript是异步执行的,它并不会等待上一步的回调函数结束了才执行下一步。

例如这里做一个属性查询功能,模糊查询state_name返回结果,showFindResultfindTask的回调函数,在回调函数统计结果的过程中,把每个图形结果加到resultGraphicArr中,此时就会出现上述问题。

可以看到右边表格里面有结果,但是输出的resultGraphicArr却显示了空数组,并且控制台输出其length也是0

将空数组点击展开发现有元素,因为控制台是会查询最新的信息,也就是说执行console.log(resultGraphicArr)这条语句的时候确实没有元素,因为findTask的回调函数还没有执行完,因此是空数组,length为0,但是现在点击的时候回调函数已经执行完了,所以加载出来是三个元素,和表格是相符的。

但是下一步又要用到上一步的结果,如何处理?

这里记录一下自己使用的方法(也希望了解更多可行性方法)

采用定时器setIntervalclearInterval方法:

1.定义一个全局变量flag初始化为false,var flag = false;

2.在回调函数中加入判断,如果已经全部加到resultGraphicArr中去了,那么将flag变为true

3.在原来的直接输出resultGraphicArr的代码块上加上定时器,每500毫秒执行一次,判断flag是否为true,如果为true才输出,并清除掉定时器

4.此时问题解决,不再是空数组,里面有元素了。

原文链接:http://www.cnblogs.com/yllh0715/p/15671727.html

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号