如何返回rxjs
功能more()
空观察到的是应该从一个GET请求如何返回rxjs
export class Collection{
public more =(): Observable<Response> => {
if (this.hasMore()) {
return this.fetch();
}
else{
// return empty observable
}
}
private fetch =(): Observable<Response> => {
return this.http.get('some-url').map(
(res) => {
return res.json();
}
);
}
}
在这种情况下,我只能做一个请求,如果hasMore()
是真的返回一个Observable
,否则我得到一个错误在subscribe()
函数subscribe is not defined
,我怎样才能返回一个空的可观察?
this.collection.more().subscribe(
(res) =>{
console.log(res);
},
(err) =>{
console.log(err);
}
)
为打字稿,你可以指定你的空观察到的通用PARAM这样的:
Observable.empty<Response>();
我得到'Rx.Observable '不可分配给'Observable
@MurhafSousli我添加了脚本代码 –
我将返回类型更改为'Observable
您可以返回Observable.of(empty_variable),例如
Observable.of('');
// or
Observable.of({});
// etc
试试这个
export class Collection{
public more(): Observable<Response> {
if (this.hasMore()) {
return this.fetch();
}
else{
return this.returnEmpty();
}
}
public returnEmpty(): any {
let subscription = source.subscribe(
function (x) {
console.log('Next: %s', x);
},
function (err) {
console.log('Error: %s', err);
},
function() {
console.log('Completed');
});
}
}
let source = Observable.empty();
或者你可以尝试ignoreElements()
以及
在我的情况与Angular2和rxjs ,它与:
import {EmptyObservable} from 'rxjs/observable/EmptyObservable';
...
return new EmptyObservable();
...
包含它与'rxjs/observable/EmptyObservable'的'import {EmptyObservable};' – Kildareflare
得到像这样的错误,我需要在system-config中配置任何东西吗? 未处理的Promise拒绝:(SystemJS)XHR错误(404 Not Found)加载http:// localhost:9190/node_modules/rxjs/Observable/EmptyObservable.js \t错误:XHR错误(404 Not Found)加载http:// localhost :9190/node_modules/rxjs /可观察/ EmptyObservable.js – user630209
与n新语法例如rxjs 5.5+,这成为如下:
import { empty } from "rxjs/observable/empty";
import { of } from "rxjs/observable/of";
empty();
of({});
只是有一点要记住,empty()
完成可观的,所以不会触发流中next
,只完成了!因此,如果你有tap
例如他们可能不会触发你想要的(见下面的例子)。
而of({})
创建一个observable并发射下一个值为{}
,它将不会完成单独的观察,也许你应该做of({}).pipe(take(1))
发射和完成。
例如
empty().pipe(
tap(() => console.warn("i will not reach here, as i am complete"))
).subscribe();
of({}).pipe(
take(1),
tap(() => console.warn("i will reach here"))
).subscribe();
你有解决方案吗?你能写些什么在这里。hasMore() – Rohitesh
@Rohitesh'hasMore(){return currentPage