我必须使用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()
,我会看到打印生成器功能。
我想从同一文件中的另一个函数调用该生成器函数。我主要想要该函数的响应,但基本上它返回一个生成器。如何从中检索响应?
答案 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);
}
}