3

当用户断开连接时,我有以下代码。我想用房间名称和用户名发出信号。

client.get('nickname', function(err, name) {
  client.get('room', function(err2, room) {
    io.sockets.in(room).emit('disconnect', name);
  });
});

我的问题是,有没有办法避免.get像这样包装电话?对于我的应用程序,它们将很快加起来。get()我可以从一个命令中获得多个值吗?还是我只是处理这一切都错了?

4

2 回答 2

4

如果您需要获取大量值,请查看async之类的流控制库。例如,以下是您可以并行get从客户端获取多个值的方式:

var async = require('async');

async.parallel([
  client.get.bind(this, 'nickname'),
  client.get.bind(this, 'room'),
  client.get.bind(this, 'anotherValue')
], function(err, results) {
  // here, `err` is any error returned from any of the three calls to `get`,
  // and results is an array:
  //    results[0] is the value of 'nickname',
  //    results[1] is the value of 'room',
  //    results[2] is the value of 'anotherValue'
});
于 2012-07-10T03:07:39.940 回答
1

如果您在对象/数组中拥有用户的所有属性,并且在对象/数组中拥有房间的所有属性,那么您仍然只需要这两个嵌套调用。你做对了。

于 2012-07-10T02:52:01.867 回答