多个接口同时调用问题

Angelina666 2019-03-27 03:52:34
我有一个表单,但是给了两个接口,有个是单个图片提交的接口,但是我有多个图片,要先把图片的接口循环发送后台,成功会返给我对应的图片地址。那么问题来了,有时候先发送的图片较大会导致比后续图片返回的时间长,我怎么才能知道图片发送与成功对应的顺序呢。肯定首先排除一个一个发,那样太慢。
...全文
1417 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2019-03-27
  • 打赏
  • 举报
回复
为每个提交成功的回调函数绑定一个提交序号的参数或变量。可以用闭包或bind()等方式绑定。

for (var i = 0; i < arr.length; i++) {
	(function (index) {
		$.ajax({
			...........
			success: function (data) {
				console.log(index);//提交序号
			}
		});
	})(i);
}

Angelina666 2019-03-27
  • 打赏
  • 举报
回复
引用 5 楼 槿畔 的回复:
[quote=引用 4 楼 Angelina666 的回复:]哦哦,对,我想看的是这些接口什么时候全部成功返回了。
//成功返回的结果存到数组,监听对比数组长度 let arr;//上传前存储图片的数组 let successArr;//成功的结果存入的数组 var timeset = setInterval(function(){ if(arr.length == successArr){ clearInterval(timeset) } },30)[/quote]哦哦,原来这么简单啊。
讨厌走开啦 2019-03-27
  • 打赏
  • 举报
回复
引用 4 楼 Angelina666 的回复:
哦哦,对,我想看的是这些接口什么时候全部成功返回了。
想看异步操作是否全部成功可以用Promise.all。
槿畔 2019-03-27
  • 打赏
  • 举报
回复
引用 4 楼 Angelina666 的回复:
哦哦,对,我想看的是这些接口什么时候全部成功返回了。
//成功返回的结果存到数组,监听对比数组长度 let arr;//上传前存储图片的数组 let successArr;//成功的结果存入的数组 var timeset = setInterval(function(){ if(arr.length == successArr){ clearInterval(timeset) } },30)
Angelina666 2019-03-27
  • 打赏
  • 举报
回复
哦哦,对,我想看的是这些接口什么时候全部成功返回了。
讨厌走开啦 2019-03-27
  • 打赏
  • 举报
回复
请求并发的时候每个请求只会处理自己的响应,不存在a请求处理了b请求响应的情况啊。
Angelina666 2019-03-27
  • 打赏
  • 举报
回复
引用 1 楼 讨厌走开啦 的回复:
你都说是 “单个图片提交的接口” 然后又说 “肯定首先排除一个一个发,那样太慢” 到底是什么场景?
就是不要一个图片成功以后调用下一个上传图片,太影响效率。
讨厌走开啦 2019-03-27
  • 打赏
  • 举报
回复
你都说是 “单个图片提交的接口” 然后又说 “肯定首先排除一个一个发,那样太慢” 到底是什么场景?

87,990

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧