Передать параметры в node.js domain.on ('error' ...) - PullRequest
1 голос
/ 07 марта 2019

Я использую koa, domain и koa-respond. Я использую domain, потому что запрос иногда падает, и я хочу, чтобы не crash node.js. У меня вопрос, is it possible to cancel request from node.js domain? Я хочу отменить запрос и показать ответ для пользователя.

Приведенный ниже код вешает запрос, но не отправляет ответ (хотя node.js не падает):

const domain = require('domain');

export default {
  tryReq: async (ctx, next) => {
    try {
        const d = domain.create();
        const parsedData = await d.run(async () => {
          const MyLink = `http://thesite.com/${ctx.params.data}`;
          d.add(ctx);
          d.on('error', err => {
            try {
              ctx.throw(403, 'Crashing');
              d.dispose();
            } catch (er) {
              console.error('Error', er, ctx.params.data);
              d.dispose();
            }
          });
          const parsedDataValue = await callUrl(MyLink);
          return parsedDataValue;
        });
        return ctx.ok(parsedData);
    } catch (err) {
      ctx.internalServerError(err);
    }
  }
};
...