Javascript RxJS需要澄清:如何返回普通对象而不是可观察对象
我正在写一个angular 2验证函数。我想返回一个普通对象,而不是可观察对象 以下是我当前的实现:Javascript RxJS需要澄清:如何返回普通对象而不是可观察对象,javascript,angular,rxjs,observable,rxjs5,Javascript,Angular,Rxjs,Observable,Rxjs5,我正在写一个angular 2验证函数。我想返回一个普通对象,而不是可观察对象 以下是我当前的实现: import {AbstractControl} from "@angular/common"; import {UserAccountService} from "../../useraccount/useraccount.service"; export function validateEmailAvailable(userAccountService: UserAccountServi
import {AbstractControl} from "@angular/common";
import {UserAccountService} from "../../useraccount/useraccount.service";
export function validateEmailAvailable(userAccountService: UserAccountService) {
return (control: AbstractControl)=> { //This returned lambda should itself return a plain object
return userAccountService.checkAvailability(control.value)
.map(res=> {
if (res.json() === true) {
return null;
}
else {
return {unavailable: true};
}
});
};
}
有人能解释一下如何正确使用RxJs运算符,以便从上面返回
null
或{unavailable:true}
,但不可观察吗?我敢打赌这是不可能的。这与要求异步函数同步返回其值相同。或者返回根据将来的值计算出的当前值。这本身就是矛盾的。承诺“运营商”也总是会回报一个承诺,如果你仔细想想的话 您可以使用返回承诺,而不是可观察的。
例如:
export function validateEmailAvailable(userAccountService: UserAccountService) {
return (control: AbstractControl)=> { //This returned lambda should itself return a plain object
return userAccountService.checkAvailability(control.value)
.toPromise()
.then(res=> {
if (res.json() === true) {
return null;
}
else {
return {unavailable: true};
}
});
};
}
与其返回lambda,为什么不直接返回包含该值的可观测值?Hi。我原以为使用承诺会有帮助,但不幸的是,我得到了同样的错误…@balteo您可能需要调试才能看到错误所在。