看很多人都误会成了一次性发送10次,补充为这样:
假如用户可以连续点击按钮,每次发1次请求,每次获得响应结果后会生成一个li,因为网络状态的影响后发出的请求可能先响应,假如点了10次,如何保证10个li的顺序与请求的顺序一致!
使用Promise.all的答案肯定都是不对的,因为你无法预测用户点击按钮的时机,用户可能一两秒完成10次点击,但也可能在10秒内完成......肯定不能说我等用户点完10次再使用Promise.all请求,何况实际情况不一定是10次。
这是我一次面试唯一没答的很好的题目,所以印象比较深刻,我开始也答的Promise.all,被直接否定,后面我提到在请求报文中携带相关参数,响应中返回,本地做mapping关系来实现,但面试官依然不是很满意。后面经我询问后面试官只提到了思路,说了几个词记得不是很清楚,后续查资料猜测貌似是在请求响应包含一个Request-Id字段,并使用 UUID 作为该值......没实践过不敢确定!
Promise.all
可以保证顺序但是得等到所有请求完毕才会触发