質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

1回答

421閲覧

async、awaitの使い方について教えてください

yoppy0066

総合スコア293

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2018/09/21 07:24

編集2018/09/21 07:25

ionic3(Angulr4)でasync、awaitを使って同期的にAPIへリクエストする処理を実装しているのですが、エラーになってしまいます。どのような理由が考えられるでしょうか?

コード

import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; import { Http, Headers,RequestOptions } from '@angular/http' import { Observable, Subject } from 'rxjs' import 'rxjs/add/operator/map' import 'rxjs/add/operator/catch' @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { constructor( public navCtrl: NavController, public http: Http ) { } ionViewDidEnter() { for (let i = 0; i < 3; i++) { console.log(i) this.requestApiAsync().then(result => console.log(result)) } } async requestApiAsync = () => { const result = await this.requestApi() return result } requestApi = () => { return new Promise(resolve => { 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}) return this.http.post(url, body, options) .map(response => response) .catch(error => error) .subscribe(result => resolve(result.json())) }) } }

エラー

mUncaught Error: Module parse failed: The keyword 'yield' is reserved (21:25) You may need an appropriate loader to handle this file type. | this.http = http; | this.requestApiAsync = function () { | var result = yield _this.requestApi(); | return result | };

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

spookybird

2018/09/21 08:12

トランスパイラはbabelでしょうか?トランスパイラが何で、バージョンがいくつかを教えてください。それから、このエラーってどこに出るエラーですか? ・・・トランスパイルがミスってるように思うんですが...yieldはジェネレータ関数内でしか使えないはず...? これかな...? https://github.com/gcanti/babel-plugin-tcomb/issues/95
spookybird

2018/09/21 08:27

すみません。babelのバージョンだけじゃわかんないですね。babelのプラグインすべてのバージョンを教えてください。
guest

回答1

0

数年前の質問に今更ですが

クラス内の文法が間違っているように見えます。

async requestApiAsync = () => { const result = await this.requestApi() return result } requestApi = () => { return new Promise(resolve => { 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}) return this.http.post(url, body, options) .map(response => response) .catch(error => error) .subscribe(result => resolve(result.json())) }) }

の部分ですが、正しくは

async requestApiAsync() { const result = await this.requestApi() return result } requestApi() { return new Promise(resolve => { 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}) return this.http.post(url, body, options) .map(response => response) .catch(error => error) .subscribe(result => resolve(result.json())) }) }

です。

クラス直下では代入文を書くことができません。

また、requestApiAsyncは必要のない関数です。

この場合this.requestApiAsync().then(…)としていますが、this.requestApi().then(…)でも同じ話ですね。

投稿2020/03/11 07:06

SF6

総合スコア23

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問