2017-06-30 10 views
1

私はReactjsを初めて利用しています。何か間違っている場合は、私に知らせてください。
私は、非同期のredux-sagaについて質問することが1つあります。
基本的に、私は1つの単純な作用を有する:Redux-sagaを使用して正しく処理すること

export function* delete (action) 
    yield call(service.deleteanitem) 
    .... 
    yield call(service.getall) 
    yield put {type: 'getall'} 
(これは私の武勇伝の内側に起こっている):私は、アイテムを選択したとき、それは成功だ場合=>
このように、再びすべてのアイテムを取得するAPIを呼び出し、それを削除します

私のアイデアは、私はそれが順次であることを意味します。つまり、アイテムを削除すると、前のアクションが完了したときに「getall」アクションが「待つ」必要があります。
提案がありますか?

+0

申し訳ありませんが、自分の佐賀の流れがどのように明確だろうか?アクションの削除=>サービスの削除=>サービスのすべての取得=>アクションのすべてを取得=> ???他に何か?それはここで止めるべきですか? – Ematipico

+0

@Ematipicoええ、そうです。私の問題は、アクションgetallはサービス/アクションの削除が完了するまで待つべきです。 – TTT

+2

このような利回りを使用している場合、後続の呼び出しは利回りが何かを返すのを待っています。だからあなたのコードが配置されると、それはすでに実行中です。 –

答えて

0

「getall」アクションは、以前のアクションが完了するたびに「wait」する必要があります。 その順番です。

ジャストフル重量fork佐賀プロセスを使用して非同期操作を使用して独自のカスタム実行フローを構築します。クロスとどのような場合をカバー

例は、依存関係を待つ:

function* sagaProc() { 
    let controlPromise, controlResolve; 
    while(true) { 
    // ... 
    controlPromise = new Promise(resolve => (controlResolve = resolve)) 
    socket.on('message', msg => controlResolve(msg)) 
    yield put({ type: 'SOME_REQUEST' }) 
    yield call(() => fetch('SOME_URL')) 
    const message = yield call(() => controlPromise) 
    yield put({ type: 'SOME_RESPONSE', ...message }) 
    // ... 
    } 
} 

function* mainSaga() { 
    // ... 
    yield fork(sagaProc) 
    // ... 
} 
関連する問題