2017-06-27 56 views
2

我有一個傳奇(A)取得API。這與行動(a)相關。我想觸發一個內部調用(a)的動作(b),等待它完成然後yield有沒有一種方法可以在redux-sagas中等待一個動作?

// saga A -> action_a 
function *saga_a(action) { 
    yield put(...action1...); 
    yield call(api, ...params); 
    yield put(...action2...); 
} 


// saga B -> action_b 
function *saga_b(action) { 
    yield put(..action3..) 

    waitFor -- put(action_a)  <------ how to achieve this? 

    yield put(..action4..) 
} 
+0

'await put(action_a)'工作嗎? –

+0

有沒有'await'的方法? –

回答

1

我這樣做的方式我的代碼庫是通過直接調用其他傳奇。不幸的是,它們將兩者結合在一起,但是因爲您需要等待,耦合至少會更加明確。

function *saga_b(action) { 
    yield put(..action3..) 
    yield call(saga_a, action_a) 
    yield put(..action4..) 
} 
+0

這就是我最終做的。我希望有一個更乾淨的方式來做到這一點。但我想沒有。感謝你的回答。 –

相關問題