有条件地返回承诺的问题(Nodejs)

这个问题的标题可能需要编辑

嗨,我有一个方法,要么返回一个对象或承诺。 function如下:

function getAllTypes() { if(cache_hit) return from_cache; else { // db Query findAllTypes.then(function(result){ return result; } } } 

这个函数将根据情况返回一个promise或一个普通的JS对象。 这是一个实用的function,将会在很多不同的地方使用。 我想保持它的返回types不变,即在这两种情况下承诺或纯JS对象(这不需要解决)。

有没有办法做到这一点?

如果你的方法可能做一些asynchronous的事情,那么假设它会这样做,这意味着它总是会返回一个承诺,你可以使用Promise.resolve从一个值创build一个Promise。

 function getAllTypes() { return cache_hit ? return Promise.resolve(from_cache) : findAllTypes() }