【发布时间】:2018-06-28 23:19:02
【问题描述】:
我有这个 redux saga 代码,一切正常......直到承诺,之后事情开始出错 这是相关代码
const firstApiRequest = ()=>{
return $.ajax({
url: myUrl,// ,
type:'POST',
headers: {
"Accept":"application/json",
"Content-Type":"application/json",
},
data:JSON.stringify(bodyData),
success:function(res){
console.log(res);
return res;
}
})
};
export function *startCheckout() {
try {
yield put(showLoading());
const data = yield call(firstApiRequest);//const data ends
yield put({type:FIRST_REQUEST_DONE,payload:data});
} catch (err) {
yield put(firstRequestFail(err));
}
}
export function *checkout() {
yield takeEvery(SEND_FIRST_REQUEST, startCheckout);
}
问题是,在 firstApiRequest 中的 return res 之后,我想使用 data 发送 FIRST_REQUEST_DONE 操作,但发生的情况是流程转到 FIRST_REQUEST_FAIL 并显示错误为真。
问题是api响应成功返回,当流程进入reducer的FIRST_REQUEST_FAIL部分并且数据显示为错误时,我正在错误中获取数据。
这是reducer的代码 流向哪里
case 'FIRST_REQUEST_FAIL':
return {
loading: false,
error: true,
errorMessage: action.err,
};
而不是去
case 'FIRST_REQUEST_DONE':
return {
id: action.id,
};
那么,这里的代码有什么问题?为什么服务器响应成功后仍然显示错误?
【问题讨论】:
标签: ajax reactjs promise redux-saga