我在这里有一个承诺链,我传递了对函数的引用,并且参数传递给它。
当我们到达第6 import { Component, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import { Observable } from 'rxjs/Observable';
import { AuthenticationService } from '../_shared/services/authentication.service';
import { CurrentUserInterface } from '../_shared/interfaces/current-user.interface';
@Component({
selector: 'app-header',
templateUrl: './header.component.html',
styleUrls: ['./header.component.css']
})
export class HeaderComponent implements OnInit {
private currentUser = new Observable<CurrentUserInterface>;
private isAuthorized: Observable<boolean> = false;
constructor(private router: Router,
private authenticationService: AuthenticationService) { }
ngOnInit() {
this.authenticationService.setCurrentUser();
this.isAuthorized = this.authenticationService.checkAuth()
.subscribe(
isAuthorized => {
this.isAuthorized = isAuthorized;
},
error => {
console.log(error);
}
);
this.currentUser = this.authenticationService.getCurrentUser()
.subscribe(
currentUser => {
this.currentUser = currentUser;
},
error => {
console.log(error);
}
);
console.log(this.currentUser.value); **// UNDEFINED**
console.log(this.isAuthorized.value); **// UNDEFINED**
}
logout() {
this.authenticationService.logout();
this.router.navigate(['../login'], { relativeTo: this.route });
}
}
时,我们抛出一个错误。我希望.then()
的格式为Error
,因此我会收到文字Error.message
而不是实际错误。
我当然可以在alwaysThrows函数中执行此操作,并且我也可以将函数传递给方法,例如OH NOES
。但是我想知道是否有办法操纵传递给console.log的参数,并将函数传递给它,但保留它作为Catch(function(error) { return error.message})
的引用?
console.log
答案 0 :(得分:2)
只需创建一个通用函数来处理错误。
在这里,我创建了一个名为return last;
的简单函数,&amp;将其放入catch回调中。
niceLog
只是表示e.message || e.toString()
它会说OH NOES
,如果没有消息属性,它将回退到toString。
Error: OH NOES