Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.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 发出新websocket请求时取消当前websocket处理_Javascript_Npm_Websocket_Ws - Fatal编程技术网

Javascript 发出新websocket请求时取消当前websocket处理

Javascript 发出新websocket请求时取消当前websocket处理,javascript,npm,websocket,ws,Javascript,Npm,Websocket,Ws,我正在使用npm ws模块(或者实际上是名为同构ws的包装器)进行websocket连接 我使用它从运行在同一台PC上的websocket++服务器接收一些数组数据。然后,这些数据被处理并显示为一系列图表 现在的问题是,处理本身需要很长时间。我使用一条消息来计算16个图表,对于每一个图表,我需要计算很多对数和其他慢运算,以及JS中的所有运算。整个刷新操作大约需要20秒 现在我可以接受了,但问题是当我收到一个新的请求时,它会在整个消息处理程序完成后被处理。如果我同时收到几个请求,所有请求都将在收

我正在使用npm ws模块(或者实际上是名为
同构ws
的包装器)进行websocket连接

我使用它从运行在同一台PC上的websocket++服务器接收一些数组数据。然后,这些数据被处理并显示为一系列图表

现在的问题是,处理本身需要很长时间。我使用一条消息来计算16个图表,对于每一个图表,我需要计算很多对数和其他慢运算,以及JS中的所有运算。整个刷新操作大约需要20秒

现在我可以接受了,但问题是当我收到一个新的请求时,它会在整个消息处理程序完成后被处理。如果我同时收到几个请求,所有请求都将在收到时处理。所以请求在那里排队,随着时间的推移,当前状态变得越来越过时

我想有一种方法来检测是否还有另一条消息等待处理。如果是这种情况,我可以随时停止当前处理程序并重新开始。。。因此,当使用
npm-ws
时,是否有一种方法可以告诉您还有另一条消息等待处理


谢谢

您需要创建某种可取消的
作业
包装器。在没有看到代码的情况下,很难给出具体的建议。但也可能是这样

constprocessarray=array=>{
让取消=假;
持续承诺=新承诺((解决、拒绝)=>{
//对数组执行一些操作
for(设i=0;i{
取消=真
},
承诺
}
}
const job=processArray([1,2,3,…1000000])//巨大数组
//把握成功
job.promise.then(result=>console.log(result))
//取消工作
作业。取消()
我相信有很多图书馆可以达到这个目的。但我只想给出一个基本的例子,说明如何做到这一点