Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.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 Nodejs Angular2和sockets异常行为_Javascript_Node.js_Typescript_Socket.io_Angular - Fatal编程技术网

Javascript Nodejs Angular2和sockets异常行为

Javascript Nodejs Angular2和sockets异常行为,javascript,node.js,typescript,socket.io,angular,Javascript,Node.js,Typescript,Socket.io,Angular,我有一个使用Nodejs、Angular 2和socket.io的小应用程序。我有一个控制器,它通过连接上的套接字获取对象数组: import { Component } from '@angular/core'; @Component({ selector: 'my-app', templateUrl: '/templates/public.html' }) export class AppComponent { public photos: Object[];

我有一个使用Nodejs、Angular 2和socket.io的小应用程序。我有一个控制器,它通过连接上的套接字获取对象数组:

import { Component } from '@angular/core';

@Component({
    selector: 'my-app',
    templateUrl: '/templates/public.html'
})

export class AppComponent 
{
    public photos: Object[];
    socket = null;

    constructor(){
        var t = this;
        this.socket = io('/public');
        this.socket.on('gallery-listing', function(data) {
            t.photos = data; console.log(data);
        }.bind(this))
    }
}
发送数据的服务器代码

// Sort picture by time
pictures.sort(function(a,b){
    return b.time - a.time;
});

// Emit the result to the socket
socket.emit('gallery-listing', pictures);
我确定这些对象提供了图片细节,并包含四个键

问题是:当我用15张图片测试我的应用程序时,一切都很好。但我尝试了249张图片和我的套接字。在('gallery-listing')上,事件侦听器被触发124次:第一次使用125个对象的数组,然后每次再次调用时,数组长度都会增加。第二次调用获取126个对象的数组,第三次调用获取127个对象的数组。。。直到最后一个,第249个包含249个对象的数组,正如您在chrome开发工具的图片上看到的:

所有控制台都是由my中的console.log生成的

this.socket.on('gallery-listing', callback)

当然,这应该只发生一次。因此,基本上,这是对性能和brandwidth的浪费,因为它加载并设置为一个数组,比如20000个对象,而不是249个。原因是什么?

你是说15张图片只运行一次,而249张图片则一直运行?你试过中间病例吗?看看数组是如何填充的可能会有所帮助/generated@valepu是的,在少于125张图片的情况下,它只运行一次,而在上面,每次都会有一次调用,每次调用的数据都是完整的数组。什么是中间案例?我知道我已经开始学习node、angular、typescript和sockets了,所以这里完全是新手。很抱歉,我可能在这里使用了错误的术语,我的意思是用15到249之间的值进行测试,没有什么太专业的。你刚才说只有不到125张图片,它只运行一次,所以这就是我想知道的。数组是如何生成/填充的?好的,与数组生成相比,更有用的方法是查看您的my app组件在html及其应用程序中的使用位置template@valepu我使用jade,所以我有一个布局和一个内容块。等等,我给你代码,你是说15张图片只运行一次,而249张图片则一直运行?你试过中间病例吗?看看数组是如何填充的可能会有所帮助/generated@valepu是的,在少于125张图片的情况下,它只运行一次,而在上面,每次都会有一次调用,每次调用的数据都是完整的数组。什么是中间案例?我知道我已经开始学习node、angular、typescript和sockets了,所以这里完全是新手。很抱歉,我可能在这里使用了错误的术语,我的意思是用15到249之间的值进行测试,没有什么太专业的。你刚才说只有不到125张图片,它只运行一次,所以这就是我想知道的。数组是如何生成/填充的?好的,与数组生成相比,更有用的方法是查看您的my app组件在html及其应用程序中的使用位置template@valepu我使用jade,所以我有一个布局和一个内容块。等等,我给你密码