【发布时间】:2016-06-24 03:11:47
【问题描述】:
我认为有不同的返回类型是不好的做法。所以,这是我的功能,我希望它总是返回一个承诺。
我试图简化场景。假设我有两条产品线(X 线和 Y 线),我按名称检索产品的方式,每条线都完全不同。
还请注意,理想情况下,我希望有一个函数来“或”两个承诺并返回成功解决的任何一个。但我想不出更好的方法来实现这一点!
ProductService.findProductByName = function findProductByName(name) {
return LineXService.findOneByName(name) // promise
.then(function _returnProduct(product) {
return product
? product // value
: LineYService.findOneByName(name)); // promise
})
};
【问题讨论】:
-
等待...这导致总是返回一个承诺。问题出在哪里?
-
@KevinB
product不是承诺,而是承诺返回的东西。 -
正确,但它在 .then 回调中返回。整个函数仍在返回一个承诺。
-
一般而言,您可以将其包装在
resolve中,但在这种特定 情况下,它可能不相关。这是一个很好的说明。 -
感谢@tadman 和 KevinB!有趣的一点。