收益率电话返回未定义

时间:2020-07-20 03:02:01

标签: call redux-saga yield

任何人都可以帮助我解决我的代码有什么问题。我试图从像这样的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)
   ]);
} 

2 个答案:

答案 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 })

...

它正常工作!