承诺,如果第一个失败,则返回第二个承诺结果
Promise that returns second promise result if first fails
如果第一个承诺(缓存中的值)失败,我想返回第二个承诺的值。
我有以下代码,但未定义解析。
exports.getConfig = function (a, r) {
return new Promise(resolve, reject) {
getConfigFromCache(a, r)
.catch(function(e){
getRouteConfigFromWeb(a, r)
}).then(function(result) {
//return value of the promise that was called
resolve(result)
})
}
};
假设 getConfigFromCache 和 getRouteConfigFromWeb 都正确返回 promise。
有没有办法做到这一点,还是我考虑错误了?
您根本不需要创建新Promise
:
exports.getConfig = function (a, r) {
var cache = getConfigFromCache(a, r);
return cache.catch(function(e) {
return getRouteConfigFromWeb(a, r); // NB: return *essential*
});
}
如果getConfigFromCache()
调用成功,则生成的已解决承诺应跳过.catch
并直接返回。
如果缓存调用失败,则会返回从getRouteConfigFromWeb()
返回的承诺。
我还注意到,您问题的第一行实际上给出了解决方案:"如果第一个(缓存中的值)失败,我想返回第二个承诺的值。 - 您从未真正将return
放入.catch
块中!
相关文章:
- 下拉选择可自动更改第二个下拉选择
- 为什么不'在JQuery中找到第二个css选择器的工作
- 当单击第一个李时,它显示内容一,当单击第二个李时,它显示内容二
- CORS-重定向到第二个GET正在接收的页面
- 正则表达式与数字中的第二个点匹配
- 如何在react js中移动第二个组件
- 使用Javascript,如何显示<tr>在另一<tr>悬停时,隐藏第二个<tr>
- 关闭第二个事件源上的第一个事件源's onopen方法
- D3从嵌套的JSON中绘制第二个圆环图
- IE11中的第二个调用取消了第一个Fetch API调用
- 第一个字第一个字符第二个字第二个字符,一直到数组结束
- 角度指令:指向第二个元素
- 时间选择器:如何通过更改第一个值来更改第二个值
- 承诺,如果第一个失败,则返回第二个承诺结果
- React Native Fetch:第二个承诺挂起
- Angular 在第一个表单验证/承诺后提交第二个表单
- AngularJS:承诺链不延迟超过第二个函数
- 如何触发一个承诺,然后触发第二个承诺,$q
- 第二个承诺决心不解雇
- 将响应传递给$q承诺的第二个then