当函数不总是返回承诺时,处理情况的最佳方法是什么?我的实际代码太复杂了,无法解释,但是问题的本质归结为检查一个条件,根据它,我要么返回一个局部变量,要么需要发送ajax请求。就像这样:
function example(value){
if(!value){
return $http.get('www.example.com');
}
else {
return "Your value is "+value;
}
}
是否有一种方法来检查函数返回的值是否是一个承诺,是否需要解决?或者还有另外一种方法来处理这种情况?谢谢您的投入!
发布于 2017-06-27 11:07:36
虽然您可以测试返回类型是否为Promise
:myValue instanceof Promise
,但最好只编写总是返回Promise
的函数。这使得他们保持一致,更容易处理。在您的示例中,您可能需要为异步函数返回一个Promise
,或者可能需要返回一个值,只需在值中使用Promise.resolve()
:
function example(value) {
if(!value) {
return $http.get('www.example.com');
} else {
return Promise.resolve('Your value is ' + value);
}
}
那样的话,你就不用担心它会给你带来什么了,而且你可以用一致的方式来处理它。
发布于 2017-06-27 11:06:22
你可以永远回报一个承诺:
function example(value){
if(!value){
return $http.get('www.example.com');
}
else {
return $q.when("Your value is "+value);
}
}
https://stackoverflow.com/questions/44778703
复制相似问题