Javascript 显示';分块';一旦他们进入AngularJS,会有什么反应?

Javascript 显示';分块';一旦他们进入AngularJS,会有什么反应?,javascript,node.js,angularjs,q,chunked-encoding,Javascript,Node.js,Angularjs,Q,Chunked Encoding,目前,我在显示从Web Service Node.js服务器(localhost:3000)发送到运行在Node.js服务器(localhost:3001)上的模拟客户端的响应“块”时遇到问题 edit*-当前实现仅使用Angular的%http作为传输,而不使用web套接字 逻辑如下: 1.在“Cities”的客户端创建一个数组,并将它们(从AngularJS控制器)发布到位于以下位置的Web服务:localhost:3000/getMatrix $http({ method:

目前,我在显示从Web Service Node.js服务器(localhost:3000)发送到运行在Node.js服务器(localhost:3001)上的模拟客户端的响应“块”时遇到问题

  • edit*-当前实现仅使用Angular的%http作为传输,而不使用web套接字
逻辑如下:

1.在“Cities”的客户端创建一个数组,并将它们(从AngularJS控制器)发布到位于以下位置的Web服务:localhost:3000/getMatrix

$http({
    method: 'POST',
    url: 'http://localhost:3000/getMatrix',
    data: cityArray
}).
success(function (data,status,headers,config){
    // binding of $scope variables

    // calling a local MongoDB to store the each data item received
    for(var key in data){
        $http.post('/saveRoutes', data[key])
        .success(function (data, status){
            // Data stored
        })
        .error(function (data, status){
            // error prints in console
        });
   }

}).
error(function (data,status,headers,config){
    alert("Something went wrong!!");
});

二,。然后,Web服务通过其流程生成一个“城市”矩阵(例如,如果超过5个城市,它将返回一个5by5[25项]的JSON矩阵)。但问题是,由于Node的>response.write(data),它以“块”的形式传回数据

旁注-Node.js会自动在标题中设置“传输编码”:“chunked”

* Other code before (routing/variable creation/etc.) *

res.set({
     'Content-Type':'application/json; charset=utf-8',
});
res.write("[\n");

* Other code to process loops and pass arguments *

// query.findOne to MongoDB and if there are no errors
res.write(JSON.stringify(docs)+",\n");


* insert more code to run loops to write more chunks *

// at the end of all loops
res.end("]");

// Final JSON looks like such
[
    { *data* : *data* },
    { *data* : *data* },
    ......
    { *data* : *data* }
]

目前的问题是不是“分块”响应没有到达目的地,但我不知道如何在分块到达后立即开始处理数据

这是一个问题,因为我正在尝试创建一个250x250的矩阵,并等待完整响应,这会使Angular在一次完成所有操作时显示结果的能力过载(从而导致页面崩溃)

这也是一个问题,因为我试图将响应保存到MongoDB,并且它只能处理一定大小的数据,否则MongoDB将无法处理“太大”的数据

我已经尝试研究Angular的,但是我对如何实现它有点困惑,并且还没有找到一种方法来开始处理数据块

因此,关于处理块的问题似乎也没有多大帮助

如果您有任何关于在返回AngularJS时显示分块数据的帮助或提示,我们将不胜感激

如果回答可以是演示该技术的信息性代码片段,我将非常感激,因为看到一个示例可以帮助我了解的不仅仅是“文本”描述


--谢谢

没有示例,因为我不确定您在传输代码方面使用的是什么/如果您有可用的websocket:

$http不支持执行任何回调,直到在请求结束时传回成功代码-它侦听具有类似
200
值的
.onreadystatechange

如果您想做这样的流,您需要使用
$http
并将其包装在一个传输层中,使多个
$http
调用都结束并返回一个成功头

您还可以使用WebSocket,而不是调用
$http
,在套接字中发出事件


然后,为了将区块返回到客户端,让服务器在后端将每个区块作为一个新事件发出,让前端侦听该事件并对每个事件进行处理。

谢谢您提供的信息。我将为我的项目添加更多的说明。我正在尝试创建一个RESTful API,它将从发送的值返回矩阵。我没有考虑过web套接字的使用,因为我认为它本质上不是RESTful的,但似乎我在这方面可能是不正确的。因此,如果我理解正确,您可以采取将$http请求拆分为多个部分的方法,然后使用$q,将事件链接在一起,在一个请求完成后,使用$q触发另一个请求。然后()还是使用网络套接字?是的!不过,使用递归和事件链接链接请求的速度会较慢。您可以一次打开区块的所有
$http
请求(假设没有数据依赖关系),在加载所有区块时(在客户端上)创建一个侦听器,并在该侦听器启动时进行处理,从而使其并行化。如果您认为这是一个可接受的答案,请向上投票并接受:)我相信您的解决方案将适用于我为这个问题显示的“PoC”案例,在这个案例中,我有一个网页要求提供信息,并使用有趣的AngularJS显示/解析结果。但出于可移植性的原因以及真正的web服务调用(来自其他语言(Java/C/等)或终端的curl),我认为我将研究web套接字作为一个可能的答案。谢谢你提供的信息。我将尝试生成一个示例答案来帮助进一步解释这个解决方案