例如,有一个图片数组{pic1,pic2,pic3,pic4,pic5},开多个线程把他们传到服务器上,但是返回的时候(假设返回{result1,result4,result3,result2,result5})是乱序的。如何保持12345,也就是上传时的顺序?android:1。是直接先new了一个list数据就直接按序号使用list的set方法,2.还使用过多线程的join方法或者wait方法可以实现效果,但是这样一个线程等着一个线程效率可能不太好,求好点的实现方法javascript:不太清楚怎么做,求解答
1 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
JS是单线程的吧,你只能把请求扔到异步上。我之前也遇到过这个问题,后来做成了异步请求队列。
最简单粗暴的方法就是下一个请求应该写在上一个请求的callback里面。假如只是用callback但是写成递归的话,可读性也没什么问题,可以避免}}}}}}}的情况。
次好的方法是用promise的写法,写成链式操作,但是假如你的请求数是不确定的,那么也不可能写死操作链。最终也只能回归到递归这个用法。
最好的方法就是用es7 stage-3的async/await。async/await语法相当于把异步写成的同步语法,然而本质上他还是建立在promise基础上的异步操作。但是有个很蛋疼的问题是,babel只转换语法不转换api,因此你想用async/await,就要加上core-js相应的polyfill……
async/await语法的介绍详细可以看这篇文章:https://github.com/brunoyang/...
添加回答
举报
0/150
提交
取消