我有以下问题:我有一个Angular 2应用程序,它发送一个这样的get请求:
getStatus(cb:(boolean, error) => void){
this.http.get(this.uri+'/forms/status')
.subscribe(
(res: Response) =>{
console.dir(res);
this.response = res;
if(res.status === 200)cb(true, null);
else cb(false, "No connection established");
}
)
}
因此,如果我的服务是否在线,此方法应该检查并且如果它处于脱机状态,则应该向用户发送消息。我的问题是我总是会得到
无法加载资源:net :: ERR_CONNECTION_RESET 当我打电话给方法时。 我的问题是我如何处理它,当我的服务离线时,该方法只返回布尔值为false。
最好的问候。
切换到
getStatus(cb:(boolean, error) => void){
this.http.get(this.uri+'/forms/status')
.map(val => true)
.catch(err => Observable.of([false])
.subscribe(
(res: boolean) => cb(res, res ? null : "No connection established");)
}
返回错误消息:
ERROR in [default] C:\Development\Code\formcreator-ui\app\src\service\form.servi
ce.ts:66:8
Argument of type '(res: boolean) => void' is not assignable to parameter of type
'NextObserver<boolean[]> | ErrorObserver<boolean[]> | CompletionObserver<boolea
n[]> | ((value: boo...'.
Type '(res: boolean) => void' is not assignable to type '(value: boolean[]) =>
void'.
Types of parameters 'res' and 'value' are incompatible.
Type 'boolean[]' is not assignable to type 'boolean'.
答案 0 :(得分:0)
如果您想在浏览器控制台中取消错误消息,那么您就不走运了。此错误由浏览器创建,无法避免。
否则这应该做你想要的。
getStatus(cb:(boolean, error) => void){
this.http.get(this.uri+'/forms/status')
.map(val => true)
.catch(err => Observable.of([false])
.subscribe(
(res: Response) => cb(res, res ? null : "No connection established");
)
}
但不是cb
我会像
getStatus(){
return this.http.get(this.uri+'/forms/status')
.map(val => true);
.catch(err => Observable.of([false])
}
然后可以像
一样使用this.getStatus().subscribe(avail => avail ? doSomething() : console.log("No connection"));
Observable是为了避免回调地狱,因此首选使用此功能而不是传递回调。