一旦进入AngularJS,有什么方法显示“分块”响应?

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

  • 编辑* – 当前的实现只是使用Angular的%http作为没有web-sockets的传输

逻辑如下:

1。 在“Cities”的客户端创build一个数组,并将它们(从AngularJS控制器)发布到位于以下位置的Web Service: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!!"); }); 

2。 然后Web服务通过它的stream程来创build一个“城市”的matrix(例如,如果它通过了5个城市,它将返回5by5 [25个项目]的JSONmatrix)。 但是问题在于,由于Node的> response.write( data ),所以它传回了'chunks'中的数据

附注 – Node.js自动设置“传输编码”:标题中的“分块”

 * 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* } ] 

目前的问题不是 “分块”的响应没有到达目的地,而是我不知道一旦大块进入就开始处理数据。

这是一个问题,因为我正在尝试做一个250×250的matrix,并等待完整的响应重载Angular显示结果的能力,因为它试图一次完成所有的事情(从而炸掉了页面)。

这也是一个问题,因为我试图保存对MongoDB的响应,而且它只能处理一定数量的数据,然后才能处理MongoDB。

我试图研究Angular的$ qpromise / defer API ,但是我对如何实现它感到困惑,并且没有find一种方法来开始处理数据块。

关于处理块的这个问题似乎也没有太大的帮助。

任何帮助或提示试图显示分块的数据,因为它返回到AngularJS将不胜感激。

如果回复可能是提供技术信息的代码片段,那么我将非常感谢,因为看到一个例子帮助我学习的不仅仅是“文本”的描述。

– 谢谢

没有例子,因为我不知道你在使用传输代码/如果你有一个websocket可用:

$ http不支持执行任何callback,直到成功代码在请求的末尾传回 – 它会以.onreadystatechange 200的值的.onreadystatechange监听.onreadystatechange

如果你想要这样做一个stream,你需要使用$http并将其包装在一个传输层中,使得多个$http调用都结束并返回一个成功标题。

你也可以使用websockets,而不是调用$http ,在套接字中发出一个事件。

然后,为了获得块回到客户端,让服务器将每个块作为后端的新事件发出,并让前端监听该事件,并为每个块执行处理。