在Angular 6中从一个函数返回true或false

3
我想从一个函数中调用另一个函数。我的代码看起来像这样: 这是我的父函数:
} 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个回答

3

你的方法是异步的,因此它不会在if语句处等待并继续执行。这就是为什么你总是跳到else条件的原因。

将你的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');
       }
});

如果这个答案对您有帮助,请考虑将其标记为答案 :) 祝好 - Derviş Kayımbaşıoğlu
这是有关编程的内容,请将其从英语翻译成中文。仅返回已翻译的文本:现在才可以翻译,谢谢! - Sithys

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接