2016-08-18 3 views
0

を使用した後、私はシンプルなコールが正常に実行されるが、コンソールの代わりに約束を印刷し、このリターンを取得しても「それから」

var x = fetch(SOME_URL, SOME_POST_DATA) 
      .then((response) => response.json()) 
      .then((responseJSON) => {return responseJSON}); 

    console.log(x); 

のように見えた、私のコンポーネントで呼び出すフェッチ作っています、実際のデータではなく約束データ。私はここで何が欠けていますか?

+0

約束は何が同期しないでください、あなたは値を取得することはできません。 'x.then(console.log) 'を使用する – Bergi

答えて

6

約束の道はresponseJSONの中でのハンドラを処理する必要があることを意味します。then()のハンドラです。要求の非同期性のために、外部コードは、約束が解決される時点まで既に返されています。

最初は頭を悩ますことは難しいかもしれませんが、これは「伝統的な」AJAXリクエストとほぼ同じです。コールバックで応答を処理します。

あなたの例を取るために:

var x = fetch(SOME_URL, SOME_POST_DATA) 
    .then((response) => response.json()) 
    .then((responseJSON) => { 
     // do stuff with responseJSON here... 
     console.log(responseJSON); 
    }); 

もっと読書を:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise

+0

Confirmedは変換してから、この変換を次のパイプに渡す必要があります。 –

関連する問題