生成器功能不显示我的数据,如何访问它?

时间:2017-10-20 02:00:22

标签: javascript reactjs ecmascript-6 generator redux-saga

我必须使用sagas和generator函数调用API。这是我的代码:

export function* fetchCreate(data) {
  try {
    const options = jsonBodyOptions(data);
    const tagResponse = yield call(
      fetchJson,
      apiPath + '/fetch',
      tagOptions
    );
    return tagResponse;
  } catch (err) {
    console.log(err);
  }
}

export function* callFetch(data)  {
   const response = fetchCreate(data);
}

如果我打印fetchCreate(),我会看到打印生成器功能。

我想从同一文件中的另一个函数调用该生成器函数。我主要想要该函数的响应,但基本上它返回一个生成器。如何从中检索响应?

1 个答案:

答案 0 :(得分:3)

尝试使用yield call(...)

export function* callFetch(data) {
   const response = yield call(fetchCreate, data);
}

如果fetchJson返回一个promise,那么你可以选择将fetchCreate转换为一个普通函数,它返回一个promise而不是一个生成器,因为yield call可以处理返回promise的函数。

export function fetchCreate(data) {
  try {
    const options = jsonBodyOptions(data);
    return fetchJson(apiPath + '/fetch', tagOptions);    
  } catch (err) {
    console.log(err);
  }
}