多个请求如何书写
... 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
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
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
2
3
4
5
6
7
8
9
10
使用Promise也是我常用的方法,那如果使用async/await
呢?