考你 javascript 的同步异步呢
去看 javascript 关于 异步,回调,async await 等内容
大概是这么个意思,你可试试去掉 async 和await 看看服务器哪边有什么区别
async function post(){
for (let i = 0; i < 10000; i++) {
let rep = await axios.post('http://127.0.0.1:8081',{i})
console.log(rep)
}
console.log('done')
}
post()
8 回答5.8k 阅读✓ 已解决
9 回答9.2k 阅读
6 回答4.7k 阅读✓ 已解决
5 回答3.5k 阅读✓ 已解决
3 回答10.3k 阅读✓ 已解决
4 回答7.9k 阅读✓ 已解决
7 回答9.8k 阅读
顺序,批量,两个关键字
先说批量,如果 1000 个一批,就不存在顺序问题。既然存在顺序问题,那一批是多少个……当然作为测试题来说多少个不重要,可以假设 100 个一批,需要分 10 批。所以第一个考点是,如何分批,Lodash 的
_.chunk
就是干这个事情的。但是在这个问题上用 chunk 比较费空间,不是最优解。然后说顺序。提交到服务器是一个异步操作,异步操作的顺序需要通过回调来保证。因为这里涉及到多次(且不定次数)提交,所以本质上是一个递归。当然如果使用 await 语法,就可以用一个简单的循环来实现。
回调写法大概是这样
反正用 await 肯定是简单得多,但要注意错误处理。Promise.then 方式如果出错不会中断程序,如果没有 catch() 会直接忽略错误。但是 await 方式发生错误会抛异常,必须要使用
try ... catch
语法。