如果第一个(缓存中的值)失败,我想返回第二个promise的值。
我有以下代码,但未定义resolve。
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。
有没有办法实现这一目标,还是我不正确地思考它?
答案 0 :(得分:3)
您根本不需要创建新的Promise
:
exports.getConfig = function (a, r) {
var cache = getConfigFromCache(a, r);
return cache.catch(function(e) {
return getRouteConfigFromWeb(a, r); // NB: return *essential*
});
}
如果getConfigFromCache()
调用成功,则生成的已解决的Promise应跳过.catch
并直接返回。
如果缓存调用失败,则返回从getRouteConfigFromWeb()
返回的Promise。
我还注意到你问题的第一行实际上给出了解决方案:“如果第一个(缓存中的值)失败,我想返回第二个promise的值。” - 你实际上从未在return
区块中放置.catch
!