Yield 调用返回 undefined

Yield call returning undefined

任何人都可以帮我解决我的代码有什么问题。我试图像这样从 sagas 文件中的 API 获取数据。我尝试在读取函数中 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)
   ]);
} 

您需要 return await request.get(path),然后您将在您的 saga 函数中获得 response.data

非常感谢,我遇到了问题。 我忘记了大括号,我这样更改我的代码:

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

...

它工作正常!