如何将单API调用场景下的Promise.all改为直接使用Promise
解决方案
直接去掉Promise.all即可,因为getCall()本身就是一个Promise,完全不需要额外包装。修改后的代码如下:
getCall() .then(res => { if (res.errorObject) { props.Error(res); } else { // ----code here--- } }) .catch(err => { console.log(err); });
说明:
- 原来用
Promise.all([getCall()])时,Promise会把单个请求的结果包装成数组返回,所以你需要用res[0]取结果;直接调用getCall()的话,then的参数就是请求返回的原始对象,不用再通过下标取值。 - 错误处理逻辑完全不用改,单个Promise的rejection依然会被后面的
catch捕获,和原来Promise.all的行为一致。 - 这种写法更简洁,也符合单个Promise的使用习惯,没必要多一层
Promise.all的冗余包装。
内容的提问来源于stack exchange,提问作者John Ken
相关产品推荐
相关产品推荐

