2017-10-20 16 views
1

私は、sagasとジェネレータ関数を使用してAPIを呼び出す必要があります。ここに私のコードは次のとおりです。ジェネレータ機能は自分のデータを表示しません。どのようにアクセスするのですか?

export function* fetchCreate(data) { 
    try { 
    const options = jsonBodyOptions(data); 
    const tagResponse = yield call(
     fetchJson, 
     apiPath + '/fetch', 
     tagOptions 
    ); 
    return tagResponse; 
    } catch (err) { 
    console.log(err); 
    } 
} 

export function* callFetch(data) { 
    const response = fetchCreate(data); 
} 

私はfetchCreate()を印刷する場合、私はジェネレータ関数を印刷します。

同じジェネレータ関数を同じファイル内の別の関数から呼び出す必要があります。私は主にその機能からの応答を望んでいますが、基本的にはそのジェネレータを返します。それからどのように応答を取り出すことができますか?

答えて

3

fetchJsonは約束を返す場合、あなたは、必要に応じて約束を返す関数とyield call動作するため代わりに発電機の約束を返すプレーン機能にfetchCreateを変換することができ​​

export function* callFetch(data) { 
    const response = yield call(fetchCreate, data); 
} 

を使用してみてください。

export function fetchCreate(data) { 
    try { 
    const options = jsonBodyOptions(data); 
    return fetchJson(apiPath + '/fetch', tagOptions);  
    } catch (err) { 
    console.log(err); 
    } 
} 
関連する問題