0
我有從JSON文件中讀取的服務器JSON對象的列表。NodeJS Closure - 循環遍歷對象數組並使用每個對象的數據Ping服務器
我正在循環瀏覽每個服務器對象,從對象中獲取一個值並將其與一個字符串連接以創建一個URL。然後,我使用URL發出獲取請求以檢查服務器是否啓動。獲取請求的結果應該設置每個服務器對象的狀態。
問題是,在每個循環中,服務器對象中的值顯示爲未定義。我似乎無法弄清楚我的關閉問題在哪裏。
var servers = require('./data/servers.json');
var ping = require('http');
var newServers = statusChecker(servers);
function statusChecker(servers) {
var i;
for(i=0;i<servers.length;i++) {
servers[i]['status'] = function(j) {
return function() {
var proto = 'http://'
var server = servers[i].servername;
var healthEndPoint = '/health-end-point';
var url = proto+server+healthEndPoint;
//This logs the url with the server part undefined
console.log(url);
ping.get(url, function(res){
console.log(res);
return true;
}).on('error', function(e){
return false;
});
}()
}(i);
}
return servers;
}
謝謝你的幫助。我運行此代碼時得到的錯誤是UnhandledPromiseRejectionWarning:未處理的承諾拒絕(拒絕標識:3):錯誤:無法確定域名當我在服務器名中硬編碼時,它確實返回了承諾列表 - 你知道嗎解決這個問題? – emerfan
是的,你需要添加'.catch()'到'promise.all'我要編輯我的答案 –