任何人都可以帮助我解决我的代码有什么问题。我试图从像这样的sagas文件中的API获取数据。我尝试用read函数将console.log response.data记录下来,然后得到数据(数组)。但是,当它在生成器函数中的变量(数据)中分配时,它尚未定义。
// sagas.js
const PATH = 'product';
const read = async (path) => {
await request.get(path)
.then(response => {
console.log('response from read :', response.data)
return response.data;
})
.catch(err => { throw err })
}
function* loadProduct() {
try {
const data = yield call(read, PATH);
yield put(actions.loadProductSuccess(data));
}
catch (error) {
console.log('what's the error :', error)
yield put(actions.loadProductFail());
}
}
export default function* rootSaga() {
yield all([
takeEvery('LOAD_PRODUCT', loadProduct)
]);
}
答案 0 :(得分:0)
您需要return await request.get(path)
,然后您的传奇函数中将获得response.data
。
答案 1 :(得分:0)
非常感谢,我遇到了问题。 我忘了花括号,我这样更改代码:
const PATH = 'product';
const read = async (path) =>
await request.get(path)
.then(response => {
console.log('response from read :', response.data)
return response.data;
})
.catch(err => { throw err })
...
它正常工作!