为了账号安全,请及时绑定邮箱和手机立即绑定

Jquery如何循环调用ajax?

Jquery如何循环调用ajax?

繁花不似锦 2019-03-22 18:19:05
现在有这样一个需求 比如我有一个数组:    arr=[           {                    id:'84001',                name:'认真的雪'            },{                    id:'84002',                name:'黄河大道东'            },{                    id:'84003',                name:'体面'            },{                    id:'84004',                name:'断了的弦'            },     ]我要通过数组中的id调用API获取到所有音乐的url,如果通过遍历数组调用ajax取到音乐的Url?var urlList=[]arr.forEach((item)=>{    $.ajax({    url:'api/v1/getMusicById?id='+item.id,    type:'get',    success:(res)=>{        urlList.push(res.url)    }        })})console.log(urlList)我起初的想法是这样的 但是这样做肯定有问题 ajax请求是异步的我想要在遍历完成后 ajax请求也全部完成 然后可以获得一个url列表请问大家 该怎么实现?
查看完整描述

7 回答

?
弑天下

TA贡献1818条经验 获得超8个赞

以上都不是正确的做法,正确的做法是让你们后端把url也返回过来,一条数据十几个请求是几个意思?

查看完整回答
反对 回复 2019-03-29
?
一只甜甜圈

TA贡献1836条经验 获得超5个赞

使用同步就行了

async: false,


查看完整回答
反对 回复 2019-03-29
?
慕慕森

TA贡献1856条经验 获得超17个赞

建议改成post请求

请求参数中将所有的id组成一个数组,后端统一返回所有的url


var urlList=[]

var idList = [1,2,3,4,5]

$.ajax({

    url:'api/v1/getMusicByIds,

    type:'post',

    data:idList,

    success:(res)=>{

        urlList = [...res.url]

    } 

})


查看完整回答
反对 回复 2019-03-29
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我觉得是你的需求有问题吧

一般需要音乐的url就是在播放的时候需要,而每次都只会同时播放一首歌,那你可以播放的时候执行一次ajax请求去通过id获取url啊


查看完整回答
反对 回复 2019-03-29
?
噜噜哒

TA贡献1784条经验 获得超7个赞

非要这么做的话就设置一个变量index=0;每一次success以后index++,然后判断arr[index]是否有值,有的话继续ajax,递归是个不错的选择


查看完整回答
反对 回复 2019-03-29
?
MM们

TA贡献1886条经验 获得超2个赞

是需求的问题, 这种情况即便功能做出来了 也不太能用 一次发那么多请求 服务器都爆炸了, 改成请求列表


查看完整回答
反对 回复 2019-03-29
  • 7 回答
  • 0 关注
  • 1227 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信