Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问节点中长期运行进程的grpc流变量_Javascript_Node.js_Process_Grpc - Fatal编程技术网

Javascript 访问节点中长期运行进程的grpc流变量

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

我使用Node.js连接到一个服务器,该服务器使用Node.js执行长时间运行的任务

作业进行时,服务器向客户端(Node.js应用程序)发送单向流。我需要实现一个停止按钮,并被告知关闭将停止正在进行的作业

这是我当前的代码:

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
    变量仅存在于该请求中,我如何从该请求中访问该变量?我想您必须将其放入一个作用域中,或者将其附加到另一个请求中可访问的作用域中的对象。