2013-03-17 51 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