通过JS回调解决异步请求中断执行的问题

项目绘制图表时需要同时请求3个数据,即同时发送了3个get请求后,需要等到3个请求的数据都返回后,对数据进行处理。

我自己原先的逻辑大致如下:

在每个数据返回以后改变对应数据标记,都检查一下3个数据标记都为真时开始处理


ex:

dataflag1=true;

function resolvedata(param1,param2,...)

{

if(!(dataflag1 && dataflag2 && dataflag3))

{

return [];

}

//continue;

}


但是发现任然会有数据未到就开始处理的情况,但这个时候数据标记已经置为真了。最后排查问题,出在JS的异步通信回调机制出现的问题,在运行完dataflag1=true后,其他数据请求返回,被打断执行,而之后的处理还未进行。导致了BUG的偶尔复现。


解决办法,在function中加入回调

unction resolvedata(param1,param2,...,callback)

{

callback();

if(!(dataflag1 && dataflag2 && dataflag3))

{

return [];

}

//continue;


}


resoledata(param1,param2,....,function(){dataflag1=true;})

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值