2016-10-15 12 views
0

私は 'redux-saga'に関するチュートリアルをたくさん読んでおり、自分のレデューサーとサガを直接実行するように構成する方法を理解しています。私が抱えている問題は、私が使用できるものを返す方法で要求されたデータを実際に取得することを知らないことです。ほとんどの人は、要求されたデータを実際に取得するために何を使用しますか? 「...降伏コール(フェッチ」redux-sagaが実際にデータを使用しています

import { call } from 'redux-saga/effects'; 

export function* request(url, method, body) { 
    try { 
     const result = yield call(fetch, url, { method: method, body: body }); 
     return {err: null, res: result }; 
    } catch(error) { 
     return {err: error, res: null }; 
    } 
} 

..The ChromeでReadableStreamを返し、私が使用している場合、私はReduxの-サンクで行ったように「-同型フェッチ」:ここで

は、私の要求サガです私は、私が見ることのできるジェネレータ関数の約束を使うことはできません。

おそらくこれは結果を消費する単純なコード行だと確信していますが、それを見つけてください。どんな助けもありがたいです。

答えて

1

私のすべての(またはほとんどの)私はラッパー関数で約束を解決する必要があり、次に私は期待どおりにジェネレータを使用することができます。ここでの例を次に示します。

Building an image gallery using react, redux and redux-saga

私は2つの別々の方法に私の要求生成器を分割し、完全にヘルパー関数内での約束を解決しました。次のように最終的な結果は次のとおりです。

import { call } from 'redux-saga/effects'; 
import fetch from 'isomorphic-fetch'; 

const actualRequest = (method, url, body) => { 
    return fetch(url, { method: method, body: body }) 
     .then(response => response.json() 
     .then(json => json)); 
} 

export function* request(method, url, body) { 
    try { 
     const result = yield call(actualRequest, method, url, body); 
     return {err: null, res: result }; 
    } catch(error) { 
     return {err: error, res: null }; 
    } 
} 

これはまだ私が使用して以前のように「同型フェッチ」それでもサガにそれを行うことができます。

関連する問題