ionic async awaitでAPIへ同期的にリクエスト
やりたいことはタイトルのとおり。初めてでハマったのでコードをメモしておく。
import { Component } from '@angular/core'; import { Http, Headers,RequestOptions } from '@angular/http' import 'rxjs/add/operator/map' import 'rxjs/add/operator/catch' @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { constructor( public http: Http ) { } ionViewDidEnter() { this.requestApiAsync() } async requestApiAsync() { for (var i = 1; i <= 3; i++) { console.log(i + '回目') let result = await this.requestApi() console.log(result) } } requestApi() { return new Promise((resolve, reject) => { let url = 'http://example.com/path/to' let body = 'key=value' let headers = new Headers({ "Content-Type": "application/x-www-form-urlencoded" }) let options = new RequestOptions({ headers: headers }) this.http.post(url, body, options) .map(response => response).catch(error => error) .subscribe( result => resolve(result.json()), error => reject(error) ) }) } }
以上です