2017-11-13 7 views
-1

を待つ間違っている可能性が何{[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined}JS非同期/だけの簡単な関数を行うリターン約束

を約束?

+0

何も問題はありません。つまり、非同期関数とまったく同じことです。約束を返します。 –

+5

何も間違っていません。これは正しいことです。約束です。 async/awaitにジャンプする前に、何が約束されているか、それらを扱う方法について少しは読んでみてください。 'doAsync()。then((result)=> console.log(result))'を実行します。 – dfsq

答えて

1

async関数は約束を返します。常に。値を取得するには、約束通りに.then()を使用する必要があります。

doAsync().then(val => { 
    console.log(val); 
}); 

asyncawaitは時々あなたはより多くの同期探して、コードを書いてみましょうが、それらは基本的に同期ものに非同期操作を変更しないでください。 async関数はまだ約束を返して、値を取得する唯一の方法は、.then()またはawaitを使用することです。チェーンの価値を返すなら、最終的には価値を得るために.then()を使う必要があります。

+0

まあ、 私は変数に実際の値を返すasync/waitの主な考えを考えました。 私は約束を使用しましたが、それでは私には意味がありません。なぜ約束を再び使わなければならないのか、非同期/待機が必要なのでしょうか? ありがとう –

+0

@chic_cat - 'await'がコメント(これは長い記事です)の中で役に立つとは本当に説明できませんが、私はそれが連続して実行したい複数の非同期関数関数。私はあなたがWeb上で 'async/await'に関する何百ものチュートリアルを読むことをお勧めします。非同期関数を非同期関数に変換しません。あなたはJavascriptでそれを行うことはできません。 – jfriend00

+0

よろしくお願いします。ありがとう! –

関連する問題