从角度6的函数返回true或false

时间:2019-01-05 00:50:30

标签: angular

我想从另一个函数中调用一个函数。我的代码如下所示: 这是我的父函数:

} else {
    if(this.checkIfCountyExists(data.convertedAddress[0].county)) {
       console.log('true');
    } else {
       console.log('false');
    }
}

这是我的子功能,在父功能中被调用:

checkIfCountyExists(county: String) {
    this.localisationService.checkCounty(county).subscribe(data => {
        if(data.success) {
            return true;
        } else {
            return false;
        }
    })
}

我的服务为返回的数据保留一个如下所示的接口:

interface data {
  success: Boolean,
  convertedAddress: any
}

但是该函数永远不会正确调用,因为它返回everytime。那么我如何创建一个正确返回true和false的函数呢?

VisualStudio说

  

void类型的表达式无法测试真实性

我的错误在哪里?

1 个答案:

答案 0 :(得分:2)

您的方法是异步的,因此它不会等待您的if语句,而是继续执行。这就是为什么您总是跳到其他情况。

将您的checkIfCountyExists方法转换为可观察的

checkIfCountyExists(county: String) {
    return this.localisationService.checkCounty(county).map(data => {
        if(data.success) {
            return true;
        } else {
            return false;
        }
    })
}

然后

this.checkIfCountyExists(data.convertedAddress[0].county).Subscribe(res => {
       if(res) {
           console.log('true');
       } else {
           console.log('false');
       }
});