如何用循环的方式提交表单数据
假如我有一个数组arr[1,2,3,4,5],
我需要提交一个表单form
内容就是 form:{id:1,status:1},以此类推直到循环完数组,但是我想等上一次提交完后再接着提交下一次的表单
回答:
可以使用for await...of
但是有兼容性问题。
https://developer.mozilla.org...
还可以使用for
循环
const forLoop = async _ => { console.log('start');
for (let index = 0; index < fruitsToGet.length; index ++) {
const fruit = fruitsToGet[index];
const numFruit = await getNumFruit(fruit);
console.log(numFruit);
}
console.log('End')
}
回答:
async/await
回答:
两种方法,第一是上面兄弟提到的async、await,另一种就是用递归
const arr = [1,2,3,4,5]let index = 0
function sendRequest(param){
new Axios({
method: 'post',
url: '/user/12345',
data: param
}).then(()=>{
if(i++<arr.length-1) sendRequest({form:{id:arr[i],status:arr[i]}})
})
}
sendRequest({form:{id:1,status:1}})
回答:
巧用reduce
也是一个解决方法。
// 模拟一个异步函数 返回的是promiselet asyncfunc = (form) => {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log(JSON.stringify(form))
resolve(form)
}, 1000)
})
}
let arr = [1,2,3,4,5]
arr.reduce((t, currentValue) => {
t = t.then(res => asyncfunc({id: currentValue, status: currentValue}))
return t
}, Promise.resolve())
以上是 如何用循环的方式提交表单数据 的全部内容, 来源链接: utcz.com/p/935460.html