我试图在承诺结束后获得价值结果。但是如果我在函数的末尾放置一个返回结果,它总是返回true。在最后的承诺内部,值变为false。 我是怎么做到的?
以下是我的代码示例:
function validations(){
result = true;
getDistance().then(function(response) {
var distance = (response.rows[0].elements[0].distance.text).split(" ")[0];
if(distance>=100)
result = false;
return result;
}
}
在这种情况下,我的功能是"未定义"当我需要一个真/假值。 当我在结尾处放置一个返回结果时,它总是返回true。
function validations(){
result = true;
getDistance().then(function(response) {
var distance = (response.rows[0].elements[0].distance.text).split(" ")[0];
if(distance>=100)
result = false;
}
return result
}
答案 0 :(得分:0)
您有两种选择。您可以使用Promise模式:
function validations() {
return getDistance().then(function(response) {
var distance = (response.rows[0].elements[0].distance.text).split(" ")[0];
return distance>=100;
});
}
validations().then(function(trueOrFalse){
// trueOrFalse is true if distance was less than or equal to 100
});
或回调模式:
function validations(cb) {
getDistance().then(function(response) {
var distance = (response.rows[0].elements[0].distance.text).split(" ")[0];
cb(null, distance>=100);
}, cb);
}
validations(function(error, trueOrFalse){
// trueOrFalse is true if distance was less than or equal to 100
});
在任何一种情况下,需要注意的重要一点是,在设置该值之前,您不会尝试执行依赖于值的代码。