Published 2021. 4. 22. 20:38
728x90
반응형

call

call은 동기 함수 호출(blocking)

call을 하면 로그인 api가 return할 때까지 기다려서 result에 값을 넣어줌

 

call의 경우 👇

function* logIn() {
    try{
        const result = yield call(logInAPI);    
        axios.post('/api/login')
            .then((result) => {	
        	    yield put({
                    type: 'LOG_IN_SUCCESS',
                    data: result.data,
        	    });
        })
    } catch (err) {
        yield put({
            type: 'LOG_IN_FAILURE',
            data: err.response.data,
        });
    }
}

 


fork

fork는 비동기 함수 호출(non blocking)
fork를 하면 비동기이기 때문에 요청 보내버리고 결과와 상관없이 바로 다음것이 실행됨

 

fork의 경우 👇

function* logIn() {
    try{
        const result = yield fork(logInAPI);    
        axios.post('/api/login')
        yield put({
               type: 'LOG_IN_SUCCESS',
               data: result.data, //result가 없는게 말이 안되기 때문에 fork를 사용할 수 없음
        });
    } catch (err) {
        yield put({
            type: 'LOG_IN_FAILURE',
            data: err.response.data,
        });
    }
}
반응형
복사했습니다!