我刚刚接受了一次面试,面试官问我——假设我使用HTTP在angular中打了一个post call,我得到了一个200的回复。这意味着生成了一个新的Id。现在我要单独打一个GET电话才能得到这个Id。有没有可能在一个电话里得到这个Id?
我说要看服务器回应。如果这个响应有一个Id,我们可以简单地订阅可观测数据并获取其值。他说不,我们只得到肯定的答复。我想不出别的办法了。然后他说你听说过角形的承诺吗?我不知道我怎么能在一个电话里用承诺做到这一点。
这就是我如何知道如何在电话后用角度承诺:
@Injectable()
export class WebApiPromiseService {
headers: Headers;
options: RequestOptions;
constructor(private http: Http) {
this.headers = new Headers({ 'Content-Type': 'application/json',
'Accept': 'q=0.8;application/json;q=0.9' });
this.options = new RequestOptions({ headers: this.headers });
}
createService(url: string, param: any): Promise<any> {
let body = JSON.stringify(param);
return this.http
.post(url, body, this.options)
.toPromise()
.then(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body || {};
}
private handleError(error: any): Promise<any> {
console.error('An error occurred', error);
return Promise.reject(error.message || error);
}
}