Попытка вызова параллельной задачи с использованием Redux-Saga приводит к тому, что all () не работает - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь запустить две задачи параллельно, используя 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 }));
}

Любая помощь будет принята с благодарностью.

Спасибо,

1 Ответ

1 голос
/ 05 апреля 2019

Мой предыдущий комментарий был определенно неосновным.

Убедитесь, что ваша версия redux-saga равна 0.15.0 или выше.Это когда all было добавлено.

Мне удалось воспроизвести вашу точную проблему в моем проекте, используя версию 0.14.X и следующий импорт: import { ..., all } from 'redux-saga/es/effects, который очень услужливо НЕ жалуется, что allне существуетПроблема была решена путем обновления до ^0.15.0 и импорта из 'redux-saga/effects'.

Надеюсь, это поможет.

...