Angular 可观察字符串变成数组
我有这个rxjs代码:Angular 可观察字符串变成数组,angular,rxjs,Angular,Rxjs,我有这个rxjs代码: private getString(): Observable<string> { return from(randomString()); } private transformString(text: string): Observable<string> { let newString = text.split("").reverse().join(""); conso
private getString(): Observable<string> {
return from(randomString());
}
private transformString(text: string): Observable<string> {
let newString = text.split("").reverse().join("");
console.log(newString); <--- all looking good, getting a single string
return from(newString);
}
public getString(): Observable<any> {
return this.randomString().pipe(
switchMap((myString) => this.transformString(myString))
);
}
private getString():可观察{
从(randomString())返回;
}
私有转换字符串(文本:字符串):可观察{
让newString=text.split(“”).reverse().join(“”);
console.log(newString);this.transformString(myString))
);
}
但是,当我在订阅中收到最终结果时,会出现一个问题,它会生成新字符串的字符串数组
getString().subscribe(str => {
console.log(str) <--- prints an array but I am expecting to get just one single reversed string
});
getString().subscribe(str=>{
log(str)因为字符串必须作为可观察对象返回,所以使用可观察类的方法应该是可行的
import { Observable } from 'rxjs/Observable';
return Observable.of(newString)
由于字符串必须作为可观察的对象返回,因此使用可观察类的方法应该是可行的
import { Observable } from 'rxjs/Observable';
return Observable.of(newString)
不会像您预期的那样将参数解释为创建可观察的
具体而言,请注意链接文档中的解释:
在此上下文中,字符串被视为字符数组
如果希望特别使用
中的使代码段工作,则需要用方括号括住参数。即:
return from([newString]);
下面只是演示了
的与
用法的之间的区别:
const{from,of}=rxjs;
//“h”、“e”、“l”、“l”、“o”
from('hello')。订阅(console.log);
//“你好”
of('hello')。订阅(console.log);
//“你好”
from(['hello'])。订阅(console.log);
不会像您预期的那样将参数解释为创建可观察的
具体而言,请注意链接文档中的解释:
在此上下文中,字符串被视为字符数组
如果希望特别使用
中的使代码段工作,则需要用方括号括住参数。即:
return from([newString]);
下面只是演示了
的与
用法的之间的区别:
const{from,of}=rxjs;
//“h”、“e”、“l”、“l”、“o”
from('hello')。订阅(console.log);
//“你好”
of('hello')。订阅(console.log);
//“你好”
from(['hello'])。订阅(console.log);
对于rxjs操作符,它将以可观察值的形式发出转换后的值。因此无需为转换后的值显式创建可观察值
如果您的目的是在订阅转换字符串时获取转换字符串,请按如下所示更改转换字符串函数
private transformString(text: string): string {
let newString = text.split("").reverse().join("");
console.log(newString);
return newString;
}
与rxjs操作符一样,它会将转换后的值作为可观察值发出,因此无需为转换后的值显式创建可观察值
如果您的目的是在订阅转换字符串时获取转换字符串,请按如下所示更改转换字符串函数
private transformString(text: string): string {
let newString = text.split("").reverse().join("");
console.log(newString);
return newString;
}
如果你做返回(新闻字符串)
,@AlexanderStaroselsky done,那-一样,但是如果我做了的(“abc”)
-工作,但是如果我做的(text.split(“”)。reverse().join(“”)
不工作,如果你做返回(新闻字符串)
,@AlexanderStaroselsky done,那-一样,但是如果我做了的(“abc”)
-有效,但如果我执行(text.split(“”)。reverse().join(“”)的,
则无效