在使用Jquery跨域获取JSON时出现一个非常奇怪的问题,一直解决不了:
1.首先用getJSON跨域获取JSON数据,回调函数执行也正常 2.然后把JSON中的某个以空格分隔的数据变成数组 3.对该数组执行循环,在循环中,用getJSON再跨域获取另一个JSON,然后执行一些动作
以上执行到第三步时,在跨域获取另一个JSON处卡壳了,断点跟踪发现,此处回调函数不执行,一直执行到最后一次循环时,这个回调函数才执行,而且会执行多次,执行次数为循环次数,而且是把之前每次循环时传给他的值依次执行。
也就是说,本应该是循环一次,执行一次getJSON,结果变成了循环结束,然后getJSON才用之前每次循环传给的值循环执行
这是怎么回事?
大家讲道理2017-04-10 12:47:57
因为你没有完整的代码,我通过描述猜测你可能是遇到了页面中使用Jquery重复JsonP的问题,你可以参考stackoverflow这个questions
parallel-jsonp-requests-in-jquery-do-not-trigger-multiple-callback-events
高洛峰2017-04-10 12:47:57
js 是单线程的,getJSON
是异步的,故虽然这个过程是在循环里,但返回结果时需要等待 js 引擎空闲后才会去执行,且多个循环发出的请求无法保证顺序