应用场景:在前端调用了并行的location.href时,客户端却只接受到一个url。
在排查过程中发现,如果两个location.href被并行调用,则会导致前一个失效。
推测结论为:因为是并行调用导致A被B替换,类似我们在浏览器中先输入一个网址然后又速度输入另一个网址
推测原因:location.href的执行方式为串行,只有当前一个完成才能执行后续的location.href。而并行调用导致了location.href地址替换问题。
浏览器 ——>A 迅速输入 ——>B 此时浏览器的地址为B
故而客户端只相应后一个href的方法。
解决方式目前有两种方案:
一:在第二个执行的href方法时,加上setTimeout,合理的时间范围是100~300ms。
二:不采用location.href,改变调用方式,采用JS的交互方法,前端调用JS方法,而不采用Url形式的调用。
网友评论