事件发射器同步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和浏览器中运行),它们使事情变得更清晰和更具可读性。