Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.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 Node.js和带有循环的服务器ID?_Javascript_Node.js - Fatal编程技术网

Javascript Node.js和带有循环的服务器ID?

Javascript Node.js和带有循环的服务器ID?,javascript,node.js,Javascript,Node.js,我是Node.js的新手,有一个小问题可能与我对Node的理解有关 基本上,我正在尝试创建一组服务器(每个服务器位于不同的端口上),以模拟我的应用程序将呼叫多个客户端的情况。但是,当我循环时,我试图使它们具有一个返回其“ID”的端点,但出于某种原因,它总是返回最终值I,19,而不是我在循环期间与client.set一起存储的索引。我错过了一些简单的东西吗?这是我的server.js: var express = require('express'); var clientcou

我是Node.js的新手,有一个小问题可能与我对Node的理解有关

基本上,我正在尝试创建一组服务器(每个服务器位于不同的端口上),以模拟我的应用程序将呼叫多个客户端的情况。但是,当我循环时,我试图使它们具有一个返回其“ID”的端点,但出于某种原因,它总是返回最终值I,19,而不是我在循环期间与client.set一起存储的索引。我错过了一些简单的东西吗?这是我的server.js:

    var express = require('express');

    var clientcount= 20;
    var clients= new Array();

    for (var i=0; i < clientcount; i++) {

        var client= express();

        client.set('id', i);

        client.get('/', function(req,res) {

            console.log("Pinged " + client.get('id'));
            res.send("Hello world from " + client.get('id'));

        });

        clients.push(client);

        console.log("Test value: " + clients[i].get('id'));

        clients[i].listen(3001 + i);
        console.log("Client listening on port " + (3001 + i));

    }
var express=require('express');
var-clientcount=20;
var clients=新数组();
对于(变量i=0;i

在本例中,“测试值”按预期打印出来,但如果我使用postman点击127.0.0.1:3014,我得到的是19,而不是预期的13。

我不知道
express
类的外观如何,但我会在那里嗅探-似乎在每次迭代中都会将此对象的相同实例分配给新创建的
客户机
变量。您不需要创建新实例吗?

@benjamin Grunbaum的评论解决了这个问题。谢谢很高兴我能提供帮助,这是JavaScript中的一个非常常见的问题,在ECMAScript 6中,
let
可以帮助缓解这个问题。谢谢!这也是事实…客户端实例有关闭问题:D。