在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML5  HTML/ Jquery如何循環(huán)調(diào)用ajax?

Jquery如何循環(huán)調(diào)用ajax?

現(xiàn)在有這樣一個(gè)需求 比如我有一個(gè)數(shù)組:

    arr=[
           {    
                id:'84001',
                name:'認(rèn)真的雪'
            },{    
                id:'84002',
                name:'黃河大道東'
            },{    
                id:'84003',
                name:'體面'
            },{    
                id:'84004',
                name:'斷了的弦'
            }, 
    ]

我要通過(guò)數(shù)組中的id調(diào)用API獲取到所有音樂(lè)的url,如果通過(guò)遍歷數(shù)組調(diào)用ajax取到音樂(lè)的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)

我起初的想法是這樣的 但是這樣做肯定有問(wèn)題 ajax請(qǐng)求是異步的
我想要在遍歷完成后 ajax請(qǐng)求也全部完成 然后可以獲得一個(gè)url列表
請(qǐng)問(wèn)大家 該怎么實(shí)現(xiàn)?

回答
編輯回答
法克魷

Promise.all,或者遞歸調(diào)用并刪除數(shù)組項(xiàng)直到為0,如果能用async/await就更簡(jiǎn)單了。
以上都不是正確的做法,正確的做法是讓你們后端把url也返回過(guò)來(lái),一條數(shù)據(jù)十幾個(gè)請(qǐng)求是幾個(gè)意思?

2018年6月20日 13:13
編輯回答
不將就

使用同步就行了

async: false,
2018年6月5日 04:48
編輯回答
厭惡我

建議改成post請(qǐng)求
請(qǐng)求參數(shù)中將所有的id組成一個(gè)數(shù)組,后端統(tǒng)一返回所有的url

var urlList=[]
var idList = [1,2,3,4,5]
$.ajax({
    url:'api/v1/getMusicByIds,
    type:'post',
    data:idList,
    success:(res)=>{
        urlList = [...res.url]
    } 
})
2017年3月1日 02:21
編輯回答
情已空

循環(huán)里面套異步請(qǐng)求的話循環(huán)結(jié)束了異步結(jié)果不一定返回,你在外面套一層閉包試試,如果forEach不行的話就換成for,我用過(guò)for循環(huán)里套異步,沒(méi)用過(guò)forEach,不知道forEach能不能生效

var urlList=[]
arr.forEach((item)=>{
    (function(){
        $.ajax({
        url:'api/v1/getMusicById?id='+item.id,
        type:'get',
        success:(res)=>{
            urlList.push(res.url)
        }
        
        })    
    })()
})
console.log(urlList)
2017年6月7日 09:35
編輯回答
安淺陌

我覺(jué)得是你的需求有問(wèn)題吧

一般需要音樂(lè)的url就是在播放的時(shí)候需要,而每次都只會(huì)同時(shí)播放一首歌,那你可以播放的時(shí)候執(zhí)行一次ajax請(qǐng)求去通過(guò)id獲取url啊

2018年4月28日 05:41
編輯回答
莓森

是需求的問(wèn)題, 這種情況即便功能做出來(lái)了 也不太能用 一次發(fā)那么多請(qǐng)求 服務(wù)器都爆炸了, 改成請(qǐng)求列表

2018年4月8日 21:24
編輯回答
練命

非要這么做的話就設(shè)置一個(gè)變量index=0;每一次success以后index++,然后判斷arr[index]是否有值,有的話繼續(xù)ajax,遞歸是個(gè)不錯(cuò)的選擇

2018年2月24日 18:47