function findById(id) {
var fullName = "";
client.emit("findById", id, function(result){
fullName = result.fullName;
});
}
関数findByIdからフルネームを見つけたい
関数 findById result = "" を呼び出すと
function findById(id) {
var fullName = "";
client.emit("findById", id, function(result){
fullName = result.fullName;
});
}
関数findByIdからフルネームを見つけたい
関数 findById result = "" を呼び出すと
同期させるには、関数をループでロックする必要があります。これを行うことはお勧めしません。
function findById(id) {
var fullname, waiting = true;
client.emit("findById", id, function(result){
fullname = result.fullName;
waiting = false;
});
while (waiting);
return fullname;
}
メソッドが本質的に非同期であるという事実を受け入れ、結果をコールバックに渡すことをお勧めします。
function findById(id, callback) {
client.emit("findById", id, function(result){
callback(result.fullName);
});
}
使用法は次のようになります。
findById(id, function(fullName) { /* ... */ });
アプリケーションでネストされたコールバックが問題になる場合は、 (Node とブラウザーで実行される) asyncのようなフロー制御ライブラリーを使用すると、物事がよりクリーンで読みやすくなります。