Как проверить ошибку с помощью обещаний? - PullRequest
0 голосов
/ 26 июня 2018

У меня есть запрос от клиента на основе переданных параметров, мне нужно сделать два вызова API, чтобы добиться этого, я использовал promise.all. Я пытаюсь выяснить, есть ли у нас ошибка во втором обещании, как бы вы уловили ошибку при первом обещании?

Также, если есть какой-то лучший подход к выполнению обещаний в следующем случае, пожалуйста, сообщите, что я довольно новичок в обещании.

controller.ts

export function getQuestions(req: Request, res: Response) {


    const p1 = axios.post('http://localhost:9002/getQuestions', req.body).then(
        function(res1) {
            return res1.data.Details;
        });

    const p2 = axios.post('http://localhost:9002/getNoQuestions', req.body).then(
        function(res2) {
            return res2.data;
        });

    Promise.all([p1, p2])
        .then(function(fullResults) {

            const modifiedResults = fullResults;
            res.json(modifiedResults);

        })
        .catch(function(e) {
            console.log(e)
        });
}

1 Ответ

0 голосов
/ 26 июня 2018

Добавьте catch предложения к отдельным обещаниям вместо того, чтобы полагаться на обработку ошибок Promise.all

const a = axios.post(...).then(r => r.data.details).catch(e => {
    console.log("error from a: ", e);
});
const b = axios.post(...).then(r -> r.data.details).catch(e => {
    console.log("error from b: ", e);
});

Promise.all([a, b]).then(([aResult, bResult]) => {
   if (aResult && bResult) {
      // do something with results
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...