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)
)
})
}
}以上です