无论内部可观察的响应是什么,我都试图返回可观察的。
https://support.loopia.se/wiki/python/
function Resolver() {
var x="5";
var ob1= Rx.Observable.of(1).delay(2000);
ob1.subscribe(d=>{
if(d=='something'){
x=x*10;
}
else{
x=x*20;
}
console.log(x);
});
return Rx.Observable.of(
x
);
}
console.clear();
var mydata= Resolver().subscribe(data => {
console.log(data)
});
上面的代码先返回5,然后返回100。我只想返回100。
答案 0 :(得分:2)
您应该使用map
运算符,而不要订阅。
import { map } from 'rxjs/operators';
function Resolver() {
...
return ob1.pipe(map(d=>{
if(d == 'something') {
return x * 10;
} else {
return x * 20;
}
}));
}
答案 1 :(得分:0)
您应该看一下map
运算符,因为我看不到您需要一个内部可观察的对象。如果是内部可观测值,则可以使用switchMap
运算符,这会将内部可观测结果映射到外部可观测值。例如:
function Resolver() {
var x=5;
return Rx.Observable.of(1).delay(2000).pipe(
map(data => {
if(d=='something'){
x=x*10;
}
else{
x=x*20;
}
return x;
});
);
}