当用户断开连接时,我有以下代码。我想用房间名称和用户名发出信号。
client.get('nickname', function(err, name) {
client.get('room', function(err2, room) {
io.sockets.in(room).emit('disconnect', name);
});
});
我的问题是,有没有办法避免像这样包裹.get
这些电话?对于我的应用程序,它们将很快加起来。我可以从一个get()
命令获得多个值吗?或者我只是处理这一切都错了?
答案 0 :(得分:4)
如果您需要获取大量值,请查看像async这样的流量控制库。例如,以下是parallel中来自客户端的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'
});
答案 1 :(得分:1)
如果你拥有对象/数组中用户的所有属性,以及对象/数组中房间的所有属性,你仍然只需要这两个嵌套调用。你做对了。