2017-08-22 18 views
1

サガの実行中にUIが1秒間ブロックされるという問題があります。私は、私の佐賀をブロックしないようにしようとしており、それはそうであるように見えます。それは非常に速く終わる。なぜ私のディスパッチは、サガが終了するまでブロックされますか?ノンブロッキングのディスパッチ方法

//Saga 
function* test(action) { 
    console.time('test') 
    yield put({type : 'test'}); 
    console.timeEnd('test') 
} 

function* changeFilterSaga(action) { 
    console.time('changeFilterSaga') 
    yield* test(test, action); 
    console.timeEnd('changeFilterSaga') 
} 

export default function* watchChangeFilter() { 
    yield takeLatest(FILTER_MYNDIGHET, changeFilterSaga); 
} 


//dispatch action 
filterData: ({ apply, filter }) => { 
    console.time('filterData') 
    dispatch(changeFilter({ apply, filter })); 
    console.timeEnd('filterData') // everything blocks until I am here 
} 

答えて

0

yield* test(test, action);は実際にブロックしています。これはyield call(test, action)と同じです。この呼び出しをノンブロッキングにするには、それをforkする必要があります:yield fork(test, action)

関連する問題