如何更改作为参考传递的函数的参数?

时间:2018-01-15 16:06:57

标签: javascript promise

我在这里有一个承诺链,我传递了对函数的引用,并且参数传递给它。
当我们到达第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

1 个答案:

答案 0 :(得分:2)

只需创建一个通用函数来处理错误。

在这里,我创建了一个名为return last; 的简单函数,&amp;将其放入catch回调中。

niceLog只是表示e.message || e.toString()它会说OH NOES,如果没有消息属性,它将回退到toString。

Error: OH NOES