多个请求如何书写

... 2020-10-15 Less than 1 minute

# 多个请求如何书写

接口文档的获取

const urls= [
  'https://xxx.com/interface1.do',
  'https://xxx.com/interface2.do',
  'https://xxx.com/interface3.do',
  'https://xxx.com/interface4.do',
  'https://xxx.com/interface5.do'
]
1
2
3
4
5
6
7

ajax回调完成

var count = 0
var errs = []
var data = []
function request (url) {
  ajax.({url:url})
  .success(function(res) {
    count++
    data.push(res)
    callback()
  })
  .fail(function (err) {
    count++
    errs.push(err)
    callback()
  })
}

function callback() {
  if (count === urls.length) {
    // dosomethis
  }
}
urls.forEach(request)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

这个我觉得还是很好懂的在早些时候jq开发的年代,这还是比较常见的一种方法,下面看一下Promise的写法

function request (url) {
  return new Promise((resolve,reject) => {
    axios({url}).then(res => resolve(res)).catch(err => reject(err))
  })
}
Promise.all(urls.map(item =>request(item)))
.then(([r0,r1,r2,r3,r4]) => {
  // dosomething
})
.catch(err => console.log(err))
1
2
3
4
5
6
7
8
9
10

使用Promise也是我常用的方法,那如果使用async/await呢?

Last update: December 23, 2022 13:14
Contributors: salvatoreliaoxuan , liaoxuan