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

event emitter synchronous node.js client side

本文关键字:js 客户端 node 同步 发射器 事件      更新时间:2023-09-26
function findById(id) {
    var fullName = "";
    client.emit("findById", id, function(result){
        fullName = result.fullName;
    });
}

我想从函数findById中找到全名

当我调用function 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) { /* ... */ });

如果嵌套回调在你的应用程序中成为一个头痛的问题,有流控制库,如async(在Node和浏览器中运行),使事情更干净,更可读