【发布时间】:2016-10-04 12:11:26
【问题描述】:
我创建了两个函数来测试Observables,每个函数都返回一个Observable:
foo() {
return new Observable(observer => {
let i = 0;
setInterval( () => {
if(i === 10) {
observer.complete();
} else {
observer.next(i);
i++;
}
}, 1000);
// If I call observer.complete() here then it never completes
});
}
bar(fooResult) {
return new Observable(observer => {
let j = 0;
setInterval( () => {
if(fooResult) {
observer.next('j -> '+j+' plus fooResult '+JSON.stringify(fooResult));
observer.complete();
} else {
observer.next(j);
j++;
}
}, 2000);
});
}
并像这样使用它们:
let fooResult = [];
// Testing observables...
this.exampleProductService.foo().subscribe(
(res) => {
console.log('foo next() -> '+res);
fooResult.push(res);
},
(err) => {
console.error('foo error: '+JSON.stringify(err));
},
() => {
console.log('foo finished');
this.exampleProductService.bar(fooResult).subscribe(
(res) => {
console.log('bar next() -> '+res);
},
(err) => {
console.error('bar error: '+JSON.stringify(err));
},
() => {
console.log('bar finished');
}
);
}
);
提出的问题是:
-
有没有更好的方法将数据从 Observable 的完成传递到另一个也返回 Observable 的函数?建立一个数组似乎很麻烦,我不能做以下事情,因为
Observable的complete callback部分没有传递像progressUpdate和onError这样的参数:(complete) => { this.exampleProductService.bar(complete).// rest of code } 我尝试将第一个函数的结果分配给一个变量,然后传递该变量,但正如预期的那样,我得到了一个 Observable 而不是我想要的结果。
我上面的做法有什么不对吗?
谢谢
附:这是一个 Angular 2 应用程序!
【问题讨论】:
标签: angular rxjs observable