ExpressJS промежуточное программное обеспечение, которое также ловит ошибки?

Вероятно, не оптимизирован, но гораздо меньше зависит от преобразований типа python:

ints = [1,2,3,4]
repeat = 3

def prod(ints, repeat):
    w = repeat
    l = len(ints)
    h = l**repeat
    ints = np.array(ints)
    A = np.empty((h,w), dtype=int)
    rng = np.arange(h)
    for i in range(w):
        x = l**i
        idx = np.mod(rng,l*x)/x
        A[:,i] = ints[idx]
    return A   
0
задан Tim Schmidt 1 March 2019 в 15:53
поделиться

1 ответ

В итоге я решил эту проблему, написав вспомогательную функцию, которая обертывает фактический обработчик. Это выглядит так:

function checkPage(handler: express.RequestHandler) {
    return async (req: express.Request, res: express.Response, next: express.NextFunction) => {
        let _write = res.write;
        res.write = chunk => {
            if (req.query.verbose) {
                return _write.call(res, `<p>${chunk}</p>`);
            } else {
                return true;
            }
        }

        try {
            await handler(req, res, next);
            res.write('<hr/><p style="color:green;"><b>happy</b></p>');
        } catch (err) {
            res.write(`<p style="color:red;">${err}</p>`);
            res.write('<hr/><p style="color:red;"><b>SAD!</b></p>')
        }

        res.end();
    }
}

Затем в моем обработчике маршрута я просто использую его так:

router.get('/foo', checkPage(async (req, res, next) => {
    ...
    res.write('stuff');
    ...
}));
0
ответ дан Tim Schmidt 1 March 2019 в 15:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: