...
|
...
|
@@ -107,6 +107,30 @@ |
|
|
_.forEach(data.list, console.log);
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
# 代码容错性
|
|
|
|
|
|
**原则:** 在接口数据返回失败或者错误的情况下,尽量保证页面正常打开,有问题的地方可以不显示内容。
|
|
|
|
|
|
1. 在使用 **Promise.all** 并行请求多个接口时,如果其中一个失败,那么整个Promise.all都返回失败
|
|
|
|
|
|
在一些情况下,比如商品详情页请求了6-7个接口,其中有的数据没有访问,对页面并不会有太大影响,更不会影响整个购物流程,那么对失败的接口,我们给一个默认值
|
|
|
|
|
|
> Since yoho-node-lib@0.0.48
|
|
|
|
|
|
```
|
|
|
const safePromise = global.yoho.safePromise;
|
|
|
|
|
|
let promises = [ promise1, promise2, promise3 ...];
|
|
|
|
|
|
Promise.all(safePromise(promises)).then(result => {
|
|
|
let data2 = result[1] || {}; // 当promise2接口调用失败, data2 默认为 undefined
|
|
|
|
|
|
if (!result[2]) { // 如果某一个接口的数据是必须的,可以自己判断抛出异常
|
|
|
throw new Error('some data must get');
|
|
|
}
|
|
|
});
|
|
|
```
|
|
|
|
|
|
|
|
|
|
...
|
...
|
|