Javascript 访问节点中长期运行进程的grpc流变量
我使用Node.js连接到一个服务器,该服务器使用Node.js执行长时间运行的任务 作业进行时,服务器向客户端(Node.js应用程序)发送单向流。我需要实现一个停止按钮,并被告知关闭将停止正在进行的作业 这是我当前的代码:Javascript 访问节点中长期运行进程的grpc流变量,javascript,node.js,process,grpc,Javascript,Node.js,Process,Grpc,我使用Node.js连接到一个服务器,该服务器使用Node.js执行长时间运行的任务 作业进行时,服务器向客户端(Node.js应用程序)发送单向流。我需要实现一个停止按钮,并被告知关闭将停止正在进行的作业 这是我当前的代码: let express=require('express'), 路由器=express.router(), grpc=要求('grpc'), srv=grpc.load(u dirname+'/job_handler.proto').ns; 让startJob=(jobI
let express=require('express'),
路由器=express.router(),
grpc=要求('grpc'),
srv=grpc.load(u dirname+'/job_handler.proto').ns;
让startJob=(jobID,参数)=>srv.createJob(jobID,参数);
路由器.post('/jobs',(req,res)=>{
让lengthyOperation=startJob(作业ID,参数);
lengthyOperation.on('数据',(数据)=>{
log(`Data from longle operation:${Data}`);
});
lengthyOperation.on('end',()=>
console.log(“冗长的操作已完成”);
});
res.setHeader('Location',`/jobs/${jobID}`);
res.status(202.send();
});
如您所见,我在创建作业时向客户机发送响应,并且它在后台异步继续
问题:
lengthyOperation
变量来执行此操作lengthyOperation
对象有一个取消调用的cancel
方法。因此,当您想要停止流时,只需调用lengthyOperation.cancel()
请注意,执行此操作时,将导致调用以错误结束。我建议添加一个
lengthyOperation.on('error',…)
处理程序来处理该错误。我不理解第二个问题。访问该对象有什么问题?谢谢,但是如果另一个请求中的lengthyOperation
变量仅存在于该请求中,我如何从该请求中访问该变量?我想您必须将其放入一个作用域中,或者将其附加到另一个请求中可访问的作用域中的对象。