3

ユーザーが切断すると、次のコードがあります。ルーム名とユーザー名で信号を出したい。

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

私の質問は、.getこのように呼び出しをラップしないようにする方法はありますか? 私のアプリケーションでは、それらはすぐに合計されます。get()1 つのコマンドから複数の値を取得できますか? それとも、これをすべて間違って処理しているだけですか?

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

オブジェクト/配列内のユーザーのすべての属性と、オブジェクト/配列内の部屋のすべての属性がある場合でも、これら2つのネストされた呼び出しのみが必要になります。あなたはそれを正しくやっています。

于 2012-07-10T02:52:01.867 に答える