需求:當有多個url在一個urls數組內,需要在當前請求回來后,再發(fā)出下一次請求。
方法1:
let ajax = function (url) {
return new Promise(resolve => {
setTimeout(()=> {
console.log(url, new Date())
resolve()
},1000)
})
}
let urls = [ 'url1', 'url2', 'url3', 'url4' ]
let p = null
urls.forEach((url,i)=> {
if (i === 0) {
p = ajax(url) //此時p為一個pending的promise對象
} else {
p = p.then(()=> {
return ajax(url)
})
}
})
//url1 Tue Feb 23 2021 15:04:33 GMT+0800 (中國標準時間)
//url2 Tue Feb 23 2021 15:04:34 GMT+0800 (中國標準時間)
//url3 Tue Feb 23 2021 15:04:35 GMT+0800 (中國標準時間)
//url4 Tue Feb 23 2021 15:04:36 GMT+0800 (中國標準時間)
方法2:
let ajax = function (url) {
return new Promise(resolve => {
setTimeout(()=> {
console.log(url, new Date())
resolve()
},1000)
})
}
let urls = [ 'url1', 'url2', 'url3', 'url4' ]
let p = Promise.resolve() //此時p為一個promise對象
urls.forEach((url,i)=> {
p = p.then(()=> {
return ajax(url) //此時p為一個pending的promise對象
})
})
//url1 Tue Feb 23 2021 15:04:33 GMT+0800 (中國標準時間)
//url2 Tue Feb 23 2021 15:04:34 GMT+0800 (中國標準時間)
//url3 Tue Feb 23 2021 15:04:35 GMT+0800 (中國標準時間)
//url4 Tue Feb 23 2021 15:04:36 GMT+0800 (中國標準時間)