के साथ भ्रमित हो रहा है यदि आप थोड़ा सहायता दे सकते हैं तो आश्चर्य की बात है। एस के साथ catch
का उपयोग करने की बात आती है जब मैं खुद को थोड़ा उलझन में लग रहा हूं।कोणीय 2- पर्यवेक्षण कैच क्लोजर स्कोप
असल में मुझे क्या करना कोशिश कर रहा हूँ है निम्नलिखित: मेरी एपीआई एक 403 त्रुटि देता है, मैं, मेरी TokenStore
पर कुछ कार्रवाई करने के लिए अर्थात् स्थानीय टोकन हटा सकते हैं और अप्रमाणित के रूप में उपयोगकर्ता को चिह्नित करना चाहते हैं। जिस तरह से मैं ऐसा करने की कोशिश कर रहा हूं वह गलत हो सकता है, इसलिए अगर इसे पूरा करने का एक बेहतर तरीका है तो कृपया मुझे बताएं।
मैं निम्नलिखित कोड के साथ यह पूरा करने के कोशिश कर रहा हूँ:
APIConnector.service.ts - एपीआई संचार तरीकों के लिए एक एकल सेवा
import {Injectable} from 'angular2/core';
import {Http, Response, Headers, RequestOptions} from 'angular2/http';
import {Observable} from 'rxjs/Observable';
import * as _ from 'lodash';
import {Logger} from './logger.service';
import {TokenStore} from '../stores/token.store';
@Injectable()
export class APIConnector {
private _apiUrl:string = 'https://api.sb.zerojargon.com/';
private _token:string = null;
constructor(
private _http:Http,
private _logger:Logger,
private _tokenStore:TokenStore
) {}
get(endpoint:String, includes:Array<string>) {
let includeString = (!_.isUndefined(includes)) ? this._parseIncludes(includes) : '';
let headers = this._createHeaders();
let options = new RequestOptions({ headers: headers });
return this._http.get(this._apiUrl + endpoint + '?include=' + includeString, options);
}
post(endpoint:String, formData:Object, includes:Array<string>) {
let includeString = (!_.isUndefined(includes)) ? this._parseIncludes(includes) : '';
let body = JSON.stringify(formData);
let headers = this._createHeaders();
let options = new RequestOptions({ headers: headers });
return this._http.post(this._apiUrl + endpoint + '?include=' + includeString, body, options);
}
handleError(error: Response) {
// log out the user if we get a 401 message
if (error.json().error.http_code === 401) {
this._tokenStore.destroy();
}
return Observable.throw(error.json().error || 'Server error');
}
private _parseIncludes(includes:Array<String>) {
return includes.join();
}
private _createHeaders() {
return new Headers({ 'Content-Type': 'application/json', 'Authorization': 'bearer ' + localStorage.getItem('token') });
}
}
जो का उपयोग अपनी सेवाओं में से प्रत्येक में एपीआईसीनेक्टर, handleError
बंद करने के लिए, Observable
एस पर मेरे पास कैच विधियां हैं। जैसे
EXCEPTION: TypeError: Cannot read property 'destroy' of undefined
मुमकिन है इस वजह से handleError एक बंद है:
public createEvent(event:Object) {
let endpoint = this._endpoint;
return this._apiConnector.post('clients/'+this.client+'/events', event, this._defaultIncludes)
.map(res => {
return this._transformer.map('event', <Object[]>res.json());
})
.catch(this._apiConnector.handleError);
}
बहरहाल, यह निम्न त्रुटि देता है। हालांकि, इस से निपटने का सबसे अच्छा तरीका मुझे यकीन नहीं है।
किसी भी विचार बहुत सराहना की जाएगी
तुम क्या करता है, तो '.catch (त्रुटि => this._apiConnector.handleError (त्रुटि)) ' – Abdulrahman