怎么在异步请求的情况下,发起的请求有序,返回的时候,数据顺序和请求顺序一样呢?

例如,有一个图片数组{pic1,pic2,pic3,pic4,pic5},开多个线程把他们传到服务器上,但是返回的时候(假设返回{result1,result4,result3,result2,result5})是乱序的。如何保持12345,也就是上传时的顺序?

android:1。是直接先new了一个list数据就直接按序号使用list的set方法,2.还使用过多线程的join方法或者wait方法可以实现效果,但是这样一个线程等着一个线程效率可能不太好,
求好点的实现方法

javascript:不太清楚怎么做,求解答


holdtom
浏览 788回答 1
1回答

缥缈止盈

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/...
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript