вызовите несколько API в цикле с избыточным - PullRequest
0 голосов
/ 22 сентября 2018

Сценарий: У меня есть список URL-адресов, я хочу вызвать каждую функцию саги-генератора в redux, собрать ответ всех в массиве и передать его в другую функцию.

Ввод:

const urlLists = [
            {app:"Application1",url:'/health/up'},
            {app:"Application2",url:'/health/up'},
            {app:"Application3",url:'/health/down'},
            {app:"Application4",url:'/health/up'}]

- когда я вызываю эти API, их ответ выглядит так: {"status": "up"} или {"status": "down"}

Вывод:

[
            {app:"Application1",status:'up'},
            {app:"Application2",status:'up'},
            {app:"Application3",status:'down'},
            {app:"Application4",status:'down'}]

То, что я пробовал: https://pastebin.com/twxhVkFw

может помочь любое тело ...

Ошибка: enter image description here

1 Ответ

0 голосов
/ 23 сентября 2018

это работает для меня ..

export function* fetchHelthSaga(action) {
    yield put(actions.fetchHealthStart());
    yield action.urlList.map(host => call(updateResponseList, host))  
}

function* updateResponseList(host){
    let r = {};
    try {
        const resp = yield api.get(host.url)
        r = { appName: host.app, status: resp.data.status, isHostResponding: true };
        yield put(actions.fetchHealthSuccess(r));
    } catch (error) {
        r = { appName: host.app, status: "down", isHostResponding: false };
        const errResp = {error:error,response:r};
        yield put(actions.fetchHealthFail(errResp));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...