我有一个函数使用库ngx-translate返回一个observable。所以要使用它我订阅方法并获得我需要的值。之后我想做一个回报,但我希望在获得价值后返回。
这是我的代码:
test(textePage: string[], params?: Object){
let textToSpeech: string;
this._translateService.get(textePage).subscribe(res => {
textToSpeech = (Object.keys(res).map(e=>res[e])).join('');
});
return textToSpeech;
}
我想要像:
test(textePage: string[], params?: Object){
let textToSpeech: string;
this._translateService.get(textePage).subscribe(res => {
textToSpeech = (Object.keys(res).map(e=>res[e])).join('');
return textToSpeech;
});
}
但我知道这不是好方法。
非常感谢。
答案 0 :(得分:0)
您可以使用map
之类的Observable方法:
return this._translateService.get(textePage).pipe(
map(res => (Object.keys(res).map(e=>res[e])).join(''))
);
现在,为了使用它,您必须在组件中调用this.test(textePage, params).subscribe
来设置组件的属性。您还可以使用将为您处理订阅的| async
管道。
答案 1 :(得分:0)
您想要使用map
运算符,如下所示:
test(textePage: string[], params?: Object){
return this._translateService.get(textePage).pipe(
map(res => {
return (Object.keys(res).map(e=>res[e])).join('');
})
);
}
...
test(myStrings, myParam).subscribe(val => console.log(val));