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

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

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

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

TypeScript

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

Q&A

解決済

2回答

1127閲覧

Typescriptで2つのPromiseを連結して実行したい。

takochan1192

総合スコア100

JavaScript

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

TypeScript

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

0グッド

2クリップ

投稿2020/08/04 22:01

Typescriptとアロー関数を使用し、Promiseのメソッドを作成しております。
コンソール上のメッセージとして
「約束通りついたよ、10時の電車に乗ろうか!」
を表示させたいのですが、コンソールを確認すると「undefined」が
返ってきております。
どうすれば正しい値が表示されるのか、
どなたかご教示いただけませんでしょうか?

Typescript

1const keep_promise = true 2const on_schedule = true 3 4const yakusoku = new Promise((resolve,reject)=>{ 5 if(keep_promise){ 6 resolve('約束通りついたよ') 7 }else{ 8 reject('約束破ってごめんな') 9 } 10}) 11 12const catchTrain = ((comment:any)=>{ 13 new Promise ((resolve,reject)=>{ 14 if(on_schedule){ 15 resolve(comment + '10時の電車に乗ろうか!') 16 }else{ 17 reject(comment + '今日は電車遅れてるね') 18 } 19}) 20}) 21 22yakusoku.then(catchTrain) 23 .then((comment)=>console.log(comment)) 24 .catch((comment)=>console.log(comment))

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

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

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

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

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

guest

回答2

0

yakusoku.then(catchTrain)

ここのcatchTrain のあとに () がないので、関数を実行できてないように思えます。

yakusoku.then(catchTrain())

に変えたらうまくいかないでしょうか

投稿2020/08/05 04:40

YakumoSaki

総合スコア2027

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

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

takochan1192

2020/08/05 12:47

ご回答ありがとうございます。 すみません。エラーが出てしまいうまくいきませんでした。
guest

0

ベストアンサー

catchTrainはPromiseをreturnする必要がありますね。

もしくはPromiseを使わないで、ただreturn/throwすれば良いです。

javascript

1const catchTrain = (comment) => { 2 if(on_schedule){ 3 return comment + '10時の電車に乗ろうか!' 4 }else{ 5 throw comment + '今日は電車遅れてるね' 6 } 7}

投稿2020/08/05 04:38

編集2020/08/05 13:13
mcho71

総合スコア67

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

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

takochan1192

2020/08/05 12:51

if(on_schedule){ return resolve(comment + '10時の電車に乗ろうか!') }else{ return reject(comment + '今日は電車遅れてるね') } ご回答ありがとうございます。このような形でしょうか?
mcho71

2020/08/05 12:59

return new Promise(... ですね
takochan1192

2020/08/08 05:54

変身が遅くなり大変申し訳ございませんでした。 おっしゃる通りでした。 無事、動作確認することができました。本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問