我正在尝试使用yield all()并行运行两个任务,但收到以下日志错误Object(...) is not a function
当我自己调用const response = yield call(request, url)
时,它可以工作。不知道为什么yield all()不喜欢我要传递的请求函数。
这是代码,
const url = `${apiHost}${getSpecificTestConfiguration.endpoint}${configurationId}`;
const [response, itemPool] = yield all([
call(request, url),
put(getItemPool(itemPoolId)),
]);
这是传递给调用效果的请求函数,在这里抛出错误
/**
* Requests a URL, returning a promise
*
* @param {string} url The URL we want to request
* @param {object} [options] The options we want to pass to "fetch"
* @return {object} An object containing either "data" or "err"
*/
export default function request(url, options = {}) {
const opts = addHeaders(options);
return fetch(url, opts)
.then(checkStatus)
.then(parseJSON)
.then((data) => ({ data }));
}
任何帮助将不胜感激。
谢谢
答案 0 :(得分:1)
我之前的评论肯定是不合逻辑的。
确保redux-saga
的版本为0.15.0
或更高。这是添加all
的时间。
我能够使用版本0.14.X
和以下导入内容import { ..., all } from 'redux-saga/es/effects
在您的项目中重现您的确切问题,它非常有帮助,不会抱怨all
不存在。通过更新为^0.15.0
并从'redux-saga/effects'
导入,解决了该问题。
希望这会有所帮助。