2017-06-14 14 views
0

私はReact-Reduxアクションを使用して、すぐにいくつかの約束応答を取得しています。実際には、これらの回答を1つの結合された応答でリンクする必要があります。 JSONレスポンスを解析する関数があります。例えばJavascript:Promises.allの応答を一緒に受け取ることができません

:resp1小道具を取得するため

Promise.all([ 
     fetch('some_backend_resource'), 
     fetch('another_backend_resource')]) 
.then(([response1, response2]) => { 
    parseJSON(response1).then(resp1 => { 
    // here I dispatch to another function the value of resp1 
    }); 
    parseJSON(response2).then(resp2 => { 
    // here I dispatch to another function the value of resp2   
    }); 
}) 

その後、私は、それぞれの減速にresp1とRESP2値を渡すと、バックビューコンポーネントで、私はそれらを一緒に入れて、時にはそれが動作しませんしてみてくださいresp2 propの前にComponentDidmountを設定します。 これらを1つのレスポンスにまとめてビューコンポーネントに渡すにはどうすればよいですか?

+0

はなぜ 'parseJSON()'非同期のですか?それはそうでなければならないようではなく、あなたの問題をより困難にしています。 – jfriend00

+0

@ jfriend00おそらく 'fetch'レスポンスオブジェクトはレスポンスを解析するための非同期' json'メソッドを持っているからです... – Brandon

答えて

1

あなたの質問は完全には明確ではありません。あなたがディスパッチする前に両方の応答を解析する場合は、最も簡単な方法は、の解析はチェーンにあるフェッチし、その結果にPromise.allを使用します。

Promise.all([ 
    fetch('some_backend_resource').then(r => parseJSON(r)), 
    fetch('another_backend_resource').then(r => parseJSON(r))]) 
.then(([resp1, resp2]) => { 
    // dispatch resp1 & resp2 
}); 
+0

あなたの応答に感謝します。 – assembler

関連する問題