2017-07-24 37 views
0

我希望從apiCall獲得的值在storedApiCall函數中嘗試捕獲,然後將該值傳遞給loginHandle生成器。所以,問題是JSON等於未定義如何將值從一個redux-sagas生成器傳遞到另一個

function* storedApiCall(name,route,kwargs){ 
    try { 
     const response = yield call(apiCall, route, kwargs); 
    } catch(e) { 
     console.log('exception: ' + e.message); 
     console.log(e); 
    } 
} 

所以我想JSON的價值是一樣的

function * loginHandle(action) { 

    const json = yield call(storedApiCall,'name', '/api/auth/login', {username, password}); 
    console.log('result is'); 
    console.log(json) 
} 
+0

嘗試撥打電話(storedApiCall,....) –

+0

did not似乎工作 我是否改變其他什麼? – user3547018

+0

不確定預期的結果是什麼?爲什麼需要發電機? – guest271314

回答

0

設法得到它的工作,通過使用信道

export default function * rootSaga() { 
    chan = yield call(channel,buffers.expanding(10)) 
在根佐賀

定義的信道,並宣佈它在文件

的通過函數

yield put.resolve(chan,response); 

的recieving的頂部功能

yield call(passingFunction) 
const response = yield take(chan) 
0

呀,什麼弗拉季lhost說的是真的,JSON返回undefined,因爲響應的價值storeApiCall不會返回任何內容。

function* storedApiCall(name,route,kwargs){ 
    try { 
     const response = yield call(apiCall, route, kwargs); 
     return response; 

    } catch(e) { 
     return e.message; 
     console.log('exception: ' + e.message); 
     console.log(e); 
    } 
} 

現在它可能對json有一些東西。

+0

我得到一個返回空白對象 – user3547018

+0

yield應該返回給另一個功能正確嗎? – user3547018

+0

是的,它應該已經返回,一個生成器的工作原理幾乎與諾曼函數相同,除了一些差異,但具有相同的邏輯。 –

相關問題