承诺之后或内部承诺之后的返还值

时间:2016-01-04 18:21:45

标签: javascript ajax promise

我试图在承诺结束后获得价值结果。但是如果我在函数的末尾放置一个返回结果,它总是返回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
 }

1 个答案:

答案 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  
});

在任何一种情况下,需要注意的重要一点是,在设置该值之前,您不会尝试执行依赖于值的代码。