事件发射器同步node.js客户端

function findById(id) { var fullName = ""; client.emit("findById", id, function(result){ fullName = result.fullName; }); } 

我想从函数findById中find全名

当我调用函数findById result =“”

要使其同步,你必须用循环locking该function。 我不build议这样做

 function findById(id) { var fullname, waiting = true; client.emit("findById", id, function(result){ fullname = result.fullName; waiting = false; }); while (waiting); return fullname; } 

只要拥抱这个方法本质上是asynchronous的,并将结果传递给一个callback就更好了:

 function findById(id, callback) { client.emit("findById", id, function(result){ callback(result.fullName); }); } 

用法将是:

 findById(id, function(fullName) { /* ... */ }); 

如果嵌套的callback在你的应用程序中变成头痛的话,那么就有像async这样的stream控制库(在Node和浏览器中运行),它们使事情变得更清晰和更具可读性。