我的模型有一个“名称”属性,我应该在保存此属性时检查是否有任何模型实例已经具有此名称,如果有,我将重新生成一个名称并重复上述。问题是我有不知道如何用Observable处理这种情况。我试过递归函数,但它不起作用! 有人能给我一些帮助吗?
test(name: string): string {
const url = `/api/products/?name=${name}`;
return this.http.get<any>(url).map(data => {
if (data.length > 0) {
name = "an other name";
this.test(name);
}
return name;
});
}
答案 0 :(得分:0)
需要进行三项更改:
concatMap
而不是使用地图。return name;
更改为return return Observable.of(name)
。this.test(name)
test(name: string): Observable<string> {
const url = `/api/products/?name=${name}`;
return this.http.get<any>(url).concatMap(data => {
if (data.length > 0) {
name = "an other name";
return this.test(name);
}
return Observable.of(name);
});
}