我想从另一个函数中调用一个函数。我的代码如下所示: 这是我的父函数:
} 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类型的表达式无法测试真实性
我的错误在哪里?
答案 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');
}
});