2013-03-17 52 views

回答

3

要使其同步,你必须锁住功能与循环。 我不建议这样做

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和浏览器中运行)等流程控制库使事情变得更清晰和更具可读性。

+0

谢谢! 这就是我需要的 – vuanphuong 2013-03-18 05:39:30