我使用koa
,domain
和koa-respond
。
我使用domain
是因为请求有时会崩溃,并且我想不使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);
}
}
};