我是node.js的新手。我正在使用Restify和node.js.我不得不向BigCommerce API發送幾個請求。處理從node.js發送的每個請求的處理超時問題(Restify)
我實際上增加了每個響應的計數器,所以成功和錯誤的情況下,只留下情況是我沒有得到答覆。 爲了更安全的一面,我想處理超時問題,即處理一個案例,當我沒有得到來自API的一些請求的回覆。
如何處理通過JsonClient(Restify)發送的每個請求的請求超時?
謝謝。
我是node.js的新手。我正在使用Restify和node.js.我不得不向BigCommerce API發送幾個請求。處理從node.js發送的每個請求的處理超時問題(Restify)
我實際上增加了每個響應的計數器,所以成功和錯誤的情況下,只留下情況是我沒有得到答覆。 爲了更安全的一面,我想處理超時問題,即處理一個案例,當我沒有得到來自API的一些請求的回覆。
如何處理通過JsonClient(Restify)發送的每個請求的請求超時?
謝謝。
這聽起來像你正在做的是一次性全部發送幾個API請求你到任何特定請求的響應之前(即所有在平行),你正在做的API響應引用計數,你收到知道你什麼時候完成。
如果這是你在做什麼,然後超時最基本的版本,這種情況會是這樣的(注:我沒有測試過這一點):
var apiTimeout;
function apiTimedOut() {
console.log("Yikes!");
apiTimeout = null;
}
function doABunchOfAPICalls() {
// call 'apiTimedOut' after 1 second (unless gotAllAPIResponses called first).
apiTimeout = setTimeout(function() {apiTimedOut();}, 1000);
... do all your API calls here...
}
// called from wherever you are reference counting when all responses received.
function gotAllAPIResponses() {
if (apiTimeout) {
clearTimeout(apiTimeout);
apiTimeout = null;
}
}
===== ================================================== ===========
這就是說,一個更好的辦法可能是使用做從節點的HTTP請求時到另一臺服務器已經內置超時(如「請求」節點模塊的BigCommerce API服務器)。看此頁「超時」,看看一個例子:
http://www.sitepoint.com/making-http-requests-in-node-js/
============================== ====================================
第三,而不是做自己的引用計算你應該考慮「承諾」,特別是「.all」功能。它允許你做一堆事情,只有在一切完成後才調用回調。舉例來說,這裏是採用了棱角分明的一個問題/答案參考,準確的功能(帶超時):
http://stackoverflow.com/questions/19900465/angularjs-q-all-timeout