我有那段代码
method(): Observable<boolean> {
return this._http.get('sessionId=' + sessionId).map(res=> {
if (res.status === "success") {
return true;
}
return false;
});
}
但是当sessionId
是''它会抛出异常并且控制台记录401错误
我在该方法中添加if:
method(): Observable<boolean> {
if (sessionId === '')
return false;
return this._http.get('sessionId=' + sessionId).map(res=> {
if (res.status === "success") {
return true;
}
return false;
});
}
但现在我收到了一个错误:
类型'boolean'不能分配给'Observable'类型。
我该如何解决?
如果我添加Observable<boolean> | boolean
,那么我会收到错误
属性'map'在类型'boolean |上不存在可观察到的”。
答案 0 :(得分:23)
method(): Observable<boolean> {
if (sessionId === '')
return false; // <<< obviously not an observable
这应该做你想要的事情
method(): Observable<boolean> {
if (sessionId === '')
return Observable.of(false);
}
return this._http.get('sessionId=' + sessionId).map(res=> {
if (res.status === "success") {
return true;
}
return false;
});
}
答案 1 :(得分:4)
除了接受的答案,我还会添加RxJs v6案例of
Observable
不存在,但可以直接从rxjs
导入:
import { Observable, of as observableOf } from 'rxjs'; // since RxJs 6
method(): Observable<boolean> {
if (sessionId === '')
return observableOf(false);
}
// ...
}
答案 2 :(得分:-1)
检查方法:
import 'rxjs/add/observable/of';
Observable.of();
您可以从字段创建Observable并使用以下内容解决问题:
method(): Observable<boolean> {
if (sessionId === '')
return Observable.of(false); // Now we got an Observable instance
return this._http.get('sessionId=' + sessionId).map(res=> {
if (res.status === "success") {
return true;
}
return false;
});
}
文档:http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-of