Javascript 如何处理不总是返回承诺的函数?
当函数不总是返回承诺时,处理这种情况的最佳方法是什么?我的实际代码太复杂,无法解释,但问题的本质归结为检查一个条件,根据它,我要么返回一个局部变量,要么需要发送一个ajax请求。 大概是这样的:Javascript 如何处理不总是返回承诺的函数?,javascript,angularjs,Javascript,Angularjs,当函数不总是返回承诺时,处理这种情况的最佳方法是什么?我的实际代码太复杂,无法解释,但问题的本质归结为检查一个条件,根据它,我要么返回一个局部变量,要么需要发送一个ajax请求。 大概是这样的: function example(value){ if(!value){ return $http.get('www.example.com'); } else { return "Your value is "+value; } } 是否有方法检查函数
function example(value){
if(!value){
return $http.get('www.example.com');
}
else {
return "Your value is "+value;
}
}
是否有方法检查函数返回的值是否是承诺,是否需要解决?或者有其他方法来处理这种情况?谢谢你的意见 您可以始终返回承诺:
function example(value){
if(!value){
return $http.get('www.example.com');
}
else {
return $q.when("Your value is "+value);
}
}
您可以始终返回一个承诺:
function example(value){
if(!value){
return $http.get('www.example.com');
}
else {
return $q.when("Your value is "+value);
}
}
虽然您可以测试返回类型是否为
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);
}
}
这样,您就不必担心它会返回什么,并且可以始终以一致的方式处理它。虽然您可以测试返回类型是否为
承诺
:myValue instanceof Promise
,但最好只编写总是返回承诺的函数。这使他们保持一致,更容易处理。在您的示例中,您可能需要为异步函数返回Promise
,或者可能需要返回值,只需使用Promise.resolve()
和以下值:
function example(value) {
if(!value) {
return $http.get('www.example.com');
} else {
return Promise.resolve('Your value is ' + value);
}
}
这样,您就不必担心它会给您带来什么,并且可以始终以一致的方式处理它。从一开始就不要编写这样的函数!只要始终返回一个承诺。否则,promise.resolve(示例(…)。然后(…)
(或角度等价物)会做得更好,只要始终返回承诺。永远不要首先编写这样的函数!只需始终返回承诺。否则,promise.resolve(示例(…)。然后(…)
(或角度等效项)会做得更好,只需始终返回承诺。