我认为拥有不同的退货类型是不好的做法。所以,这是我的功能,我希望它始终返回一个承诺。
我试图简化方案。让我们说我有两行产品(第X行和第Y行)以及我按名称检索产品的方式,每行都完全不同。
请注意,理想情况下,我希望有一个功能,以及#34;或者#34;两个承诺并返回成功解决的任何一个。但我无法想出一个更好的方法来实现这个目标!
ProductService.findProductByName = function findProductByName(name) {
return LineXService.findOneByName(name) // promise
.then(function _returnProduct(product) {
return product
? product // value
: LineYService.findOneByName(name)); // promise
})
};
答案 0 :(得分:1)
你是对的,返回一致的东西比一个模棱两可的结果更好。通常,您可以轻松地将任意值转换为承诺。例如,使用resolve
:
if (product) {
return Promise.resolve(product);
}
return LineYService.findOneByName(name);
值得注意的是,正如凯文B所观察到的那样,这在这种特殊情况下是无关紧要的,因为你的外部函数总是返回一个承诺。如果这不是周围承诺的一部分,那么承诺价值的需要只是一个问题。