Javascript 如何在Angular中提供连锁服务方法?

Javascript 如何在Angular中提供连锁服务方法?,javascript,angular,callback,rxjs,Javascript,Angular,Callback,Rxjs,我需要将两个服务链接在一起,以便发出成功的HTTP请求。第一个服务创建一个授权头,第二个服务调用Angular Http服务 如何链接这些调用,以便授权标头服务在主HTTP调用之前返回 当我运行这段代码时,我得到一个未定义的.toPromise()错误 get(url) { const headers = new Headers(); this.createAuthorizationHeader(headers,function(){ return this.htt

我需要将两个服务链接在一起,以便发出成功的HTTP请求。第一个服务创建一个授权头,第二个服务调用Angular Http服务

如何链接这些调用,以便授权标头服务在主HTTP调用之前返回

当我运行这段代码时,我得到一个未定义的
.toPromise()错误

get(url) {
    const headers = new Headers();
    this.createAuthorizationHeader(headers,function(){
       return this.http.get(url, {headers: headers});
});

}
授权标头服务:

import { Injectable } from '@angular/core';
import { Http, Headers, Response } from '@angular/http';
import { environment } from '../../environments/environment';
import { ErrorHandlerService } from './error-handler.service';
import { tokenNotExpired, JwtHelper } from 'angular2-jwt';
@Injectable()
export class HttpClient {
jwtHelper: JwtHelper = new JwtHelper();
count = 1;
constructor(private http: Http, private _errorHandler: ErrorHandlerService) 
{ }
createAuthorizationHeader(headers: Headers) {
    let token = '';
    if (sessionStorage.getItem('token')) {
        token = sessionStorage.getItem('token')
    }
    if (token && typeof token === 'string') {
        if (this.jwtHelper.isTokenExpired(token) && this.count === 1) {
            this.refreshToken()
        }
        else {
            headers.append('Authorization', 'Bearer ' + token);
        }
    }
}

get(url) {
    const headers = new Headers();
    this.createAuthorizationHeader(headers);
    return this.http.get(url, {
        headers: headers
    });
}
 refreshToken(): any {
    this.getRefreshAWSToken(sessionStorage.getItem('refresh_token'))
        .then(resp => {
            return this.getwithheader(environment.BASE_URL + '/token', JSON.parse(resp).id_token).toPromise()
                .then((resp1: Response) => {
                    console.log(resp1)
                    const newJwttoken = JSON.parse(resp1.text()).token;
                    sessionStorage.setItem('token', newJwttoken);
                    const headers = new Headers();
                    headers.append('Authorization', 'Bearer ' + newJwttoken);
                })
                .catch(err => this._errorHandler.handleError(err));
        });
}
}
Http请求服务:

import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { DataTableParams } from 'angular-4-data-table';
import { SharedService } from './shared.service';
import { HttpClient } from './http.service';
import { Observable } from 'rxjs/rx';
import { ErrorHandlerService } from './error-handler.service';
@Injectable()
export class DeviceService {
BASE_URL: String;
constructor(private http: HttpClient,
    private _sharedService: SharedService,
    private _errorHandler: ErrorHandlerService) {
    this.BASE_URL = this._sharedService.BASE_URL;
};


getCarriers(): any {
    return this.http.get(this.BASE_URL + '/lookup/carriers').toPromise()
        .then((resp: Response) => resp.text())
        .catch(err => this._errorHandler.handleError(err));
}
}