代码之家  ›  专栏  ›  技术社区  ›  Prateek Chitransh

你将如何发布和获取数据使用一个单一的角度调用?

  •  0
  • Prateek Chitransh  · 技术社区  · 7 年前

    我刚刚接受了一次面试,面试官问我——假设我使用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);
        }
    }
    
    0 回复  |  直到 7 年前
    推荐文章