Лучший способ отладки обещаний, работающих параллельно

Разрабатываю серверную часть приложения, используя nodejs+express и RSVP для обещаний.

Проблема: при возникновении ошибки или исключения в одной из неожиданных функций выполнение зависает. Есть ли способ, которым я могу найти, какая из функций имеет ошибку.

Код выглядит так:

    function checkifvalid_call() {
        return new RSVP.Promise(function(fulfil, reject) {
            common.checkifvalid(test, function(isValid) {
                if (isValid === false) {
                    logger.fatal("Not valid test....sending invalid result")
                    res.send({
                        "Error": "Invalid test"
                    });
                }
            });
        });
    }


    function secondtest_call() {
        return new RSVP.Promise(function(fulfil, reject) {
            common.secondtest(test, function(isValid) {
                if (isValid === false) {
                    logger.fatal("Not valid second test....sending invalid result")
                    res.send({
                        "Error": "Invalid second test"
                    });
                }
            });
        });
    }

    RSVP.allSettled([checkifvalid_call(), secondtest_call()]).then(function(ret_array) {
        console.log("Calls finished");
        logger.debug("sending result..............")
        res.send("success);
    }).catch(function(reason) {
        logger.debug("Exception encountered : " + reason);
    }).finally(function() {
        logger.debug("All done finally")
    });

    RSVP.on('error', function(reason) {
        console.assert(false, reason);
    });

Спасибо.

1 ответ

Попробуйте использовать try{}catchи использовать обработчик ошибок RSVP для каждого из обещаний вместо всего этого. Текущий набор обработчиков только проверяет, есть ли в "allSettled" ошибка afaik.

Этот пост в блоге объясняет обещания очень хорошо:

Как использовать обещания

Другие вопросы по тегам