多接口请求
前端时常会碰到要请求多个接口的场景。一个接口设置一个函数,统一在生命周期执行的方法也可以,但是代码量大,维护麻烦。
有没有什么简便的方法呢?
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))))
这下报错接口能够被捕获到错误,而没问题的接口能返回信息。