我刚刚进行了一次采访,采访者问我-假设我使用HTTP进行了角度的发布呼叫,并且得到了200 OK的响应。这意味着将生成一个新的ID。现在,我将不得不进行单独的GET调用以获取此ID。有没有办法在一次调用中获得此ID?
我说的取决于服务器响应,如果响应具有ID,我们可以简单地订阅可观察对象并获取其值。他说不,我们只能得到确定的答复。我没有其他办法了。然后他说你听说过诺言吗?我不知道如何在使用诺言的单次通话中实现这一目标。
这就是我知道如何在Angular中对POST调用使用Promise的方法:
@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);
}
}