带有axios的昂贵的api调用会阻止可触摸对象,但不会在反应本地和redux-saga中进行获取

时间:2018-10-30 16:08:14

标签: react-native redux fetch axios redux-saga

我正在使用redux saga来处理React本机应用程序中的api调用。这是使用axios时设置sagas的方式:

function* getList(){
    try{
        response = yield call(axios.get,'https://example.com/list');
        yield put({type:'LIST_RESULTS',data:response.data});
    } catch(err){
        console.log(err);
    }
}
...
function* rootSaga(){
    yield takeLatest(types.GET_LIST,getList);
    ...
}

该调用获取大约700kbs的数据。 调度此动作后,所有可触摸对象均不会响应,并且一旦收到响应,就将批量触发在请求进行过程中调用的所有事件。

与提取一起使用时,相同的api请求没有相同的问题。 这是使用提取时的代码

function* getList(){
    try{
        response = yield call(fetch,'https://example.com');
        data = yield call(getJson,response);
        yield put({type:'LIST_RESULTS',data});
    } catch(err){
        console.log(err);
    }
}
async function getJson(data){
    return new Promise((resolve,reject)=>{
        data.json().then(result=>{
            resolve(result);
        }).catch(err=>{
            reject(err);
        });
    });
}

有人可以帮我调试这里的问题吗?

0 个答案:

没有答案