mirror of
https://github.com/terribleplan/next.js.git
synced 2024-01-19 02:48:18 +00:00
38 lines
816 B
JavaScript
38 lines
816 B
JavaScript
|
/* global fetch */
|
||
|
|
||
|
import {delay} from 'redux-saga'
|
||
|
import {all, call, put, take, takeLatest} from 'redux-saga/effects'
|
||
|
import es6promise from 'es6-promise'
|
||
|
import 'isomorphic-fetch'
|
||
|
|
||
|
import {actionTypes, failure, loadDataSuccess, tickClock} from './actions'
|
||
|
|
||
|
es6promise.polyfill()
|
||
|
|
||
|
function * runClockSaga () {
|
||
|
yield take(actionTypes.START_CLOCK)
|
||
|
while (true) {
|
||
|
yield put(tickClock(false))
|
||
|
yield call(delay, 800)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function * loadDataSaga () {
|
||
|
try {
|
||
|
const res = yield fetch('https://jsonplaceholder.typicode.com/users')
|
||
|
const data = yield res.json()
|
||
|
yield put(loadDataSuccess(data))
|
||
|
} catch (err) {
|
||
|
yield put(failure(err))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function * rootSaga () {
|
||
|
yield all([
|
||
|
call(runClockSaga),
|
||
|
takeLatest(actionTypes.LOAD_DATA, loadDataSaga)
|
||
|
])
|
||
|
}
|
||
|
|
||
|
export default rootSaga
|