小程序request 里面循環(huán)怎么寫(xiě)
小程序request 里面循環(huán)怎么寫(xiě)
在小程序開(kāi)發(fā)中,我們經(jīng)常需要使用小程序提供的request API 來(lái)進(jìn)行網(wǎng)絡(luò)請(qǐng)求。但是使用API時(shí),有些情況下需要對(duì)請(qǐng)求體多個(gè)參數(shù)進(jìn)行循環(huán)操作。如何在request里面進(jìn)行循環(huán)呢?下面將從三個(gè)方面為大家詳解。
使用Promise.all方式處理循環(huán)請(qǐng)求
Promise.all 可以接受一個(gè)promise對(duì)象數(shù)組作為參數(shù),并發(fā)執(zhí)行里面的所有promise對(duì)象,并在全部完成后返回響應(yīng)結(jié)果數(shù)組。因此我們可以在循環(huán)中定義一個(gè)promise對(duì)象數(shù)組,存放每一次的請(qǐng)求,并使用Promise.all()方法等待它們?nèi)拷Y(jié)束。
//仿照名師推薦列表的swiper視圖
const ids = [117438, 106655, 107801]
let promiseArr = []
for(let id of ids) {
promiseArr.push(new Promise((resolve, reject) => {
wx.request({
url: 'https://www.xxxx.com',
data:{id: `${id}`},
success(res) {
resolve(res.data)
},
fail(err) {
reject(err)
}
})
}))
}
Promise.all(promiseArr).then(results => {
console.log(results)
}, error => {
console.error(error)
})
同步循環(huán)操作——使用async/await
async/await內(nèi)置了generator和co庫(kù)的優(yōu)勢(shì),在循環(huán)中只要當(dāng)前請(qǐng)求結(jié)束后返回是個(gè)promise即可,將每一次操作封裝在函數(shù)之內(nèi)。為異步操作添加await關(guān)鍵字來(lái)等待結(jié)果。其次我們可以使用for..of循環(huán)遍歷時(shí)獲取forEach無(wú)法得到索引下標(biāo)的特性。
async function getRequest(){
const ids = [117438, 106655, 107801]
for(let i=0;i
通過(guò)遞歸方式處理請(qǐng)求結(jié)果
如果我們想將當(dāng)前響應(yīng)作為請(qǐng)求數(shù)據(jù)實(shí)現(xiàn)遞歸請(qǐng)求怎么處理呢?一般情況下,我們需要封裝一個(gè)方法作為多次調(diào)用該接口 或在 promise 中使用 reject / resolve 的回調(diào)函數(shù)傳入方法。例如下列代碼:
//遞歸函數(shù)請(qǐng)求列表
const request = (url) => {
return new Promise((resolve, reject) => {
wx.request({
url: url,
success: res => {
if (res.statusCode === 200 && res.data.length > 0) {
resolve(res.data)
} else {
reject(new Error(res.errMsg))
}
},
fail: err => reject(err)
})
}).then(data => {
console.log(data) //請(qǐng)求結(jié)果
const nextUrl = data && data.next || ''
if (nextUrl) {
return request(nextUrl) //遞歸調(diào)本身完成后續(xù)操作
} else {
console.log('STOP...')
}
}, error => console.error(error))
}
request('https://www.xxxxx.com')
結(jié)語(yǔ)
以上就是小程序request循環(huán)請(qǐng)求的幾種實(shí)現(xiàn)方式,使用Promise.all、async/await以及遞歸方式,這些方法在循環(huán)請(qǐng)求時(shí)皆有所用。尤其是對(duì)于后端分頁(yè)進(jìn)行數(shù)據(jù)請(qǐng)求時(shí)更是大有幫助,增強(qiáng)了小程序API的可拓展性和靈活度。
本文標(biāo)簽:
蘇州建站公司 杭州網(wǎng)站建設(shè) 廣州建網(wǎng)站 唐山網(wǎng)站建設(shè) 鄂爾多斯企業(yè)建站 鄭州企業(yè)建站 長(zhǎng)沙網(wǎng)站建設(shè) 石家莊做網(wǎng)站 徐州建網(wǎng)站
天門(mén)網(wǎng)站制作 恩施網(wǎng)站制作 鐘祥網(wǎng)站設(shè)計(jì) 洪湖網(wǎng)站制作 當(dāng)陽(yáng)網(wǎng)站設(shè)計(jì) 武穴網(wǎng)站建設(shè) 襄陽(yáng)做網(wǎng)站 鄂州企業(yè)建站 枝江網(wǎng)頁(yè)制作
上一篇:即速 小程序如何上傳
下一篇:微信如何融合第三方