跳转到内容

多接口请求

前端时常会碰到要请求多个接口的场景。一个接口设置一个函数,统一在生命周期执行的方法也可以,但是代码量大,维护麻烦。

有没有什么简便的方法呢?

Promise 对象提供了一个 all 方法,可以调用多个接口,根据位置依次返回 promise 请求参数。返回的是一个数组,因此可以通过解构的方式获取。代码如下所示:

js
const [res, result] = await Promise.all(['接口1', '接口2'])

运行后可以看到有效果了。但是还有潜在的问题。

众所周知,接口是有存在错误的情况的,如果有一个接口报错,则全部的接口都不再返回。因此需要铺货错误。

可以通过 map 循环,每一项都通过 catch 方法捕获错误,代码如下所示:

js
const [res, result] = await Promise.all(['接口1', '接口2'].map(v => v.catch(e => console.log(e))))

这下报错接口能够被捕获到错误,而没问题的接口能返回信息。