2013-12-12 41 views
0

我試圖在Node.js中使用node-rest-client REST客戶端。Node.js:REST客戶端在返回之前返回值

當我使用下面的代碼時,它會返回null,但控制檯之後會打印響應。我如何使用REST客戶端進行同步呼叫?

var postRequest = function(url, args) { 
    var client = new Client(); 
    var responseData = {}; 

    client.post(url, args, function(data, response) { 
    responseData = data; 
    console.log(responseData); 
    }); 

    return responseData; 
}; 

回答

6

模塊在內部使用Node.js的本地HTTP方法,因此它們不同步。你不能把一個異步函數轉換爲同步,所以你需要使用一個回調:

var postRequest = function(url, args, callback) { 
    var client = new Client(); 
    var responseData = {}; 
    client.post(url, args, function(data, response) { 
    responseData = data; 
    callback(responseData); 
    }); 
}; 

然後,你可以調用該函數是這樣的:

postRequest(url, args, function(response) { 
    // response 
}); 
+0

完美,感謝您的解釋。 。 – Ramesh