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

我想从函数 findById 中找到全名

当我调用函数 findById result = ""

4

1 回答 1

4

要使其同步,您必须使用循环锁定函数。我不建议这样做

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 和浏览器中运行),可以让事情变得更清晰、更具可读性。

于 2013-03-18T05:14:03.893 回答