2
我正在通過NodeSchool的learnyounode工作。JavaScript數組元素不變
在這個問題中,我們提供了三個URL作爲前三個命令行參數。我們必須收集每個URL提供給我們的完整內容並將其打印到控制檯(stdout)。我們不需要打印出長度,只需將數據打印爲字符串;每個URL一行。問題在於,我們必須按照與作爲命令行參數提供給我們的URL相同的順序將它們打印出來。
這是我目前的解決方案嘗試,但是,似乎有一個問題。程序進入無限循環,我無法弄清楚爲什麼。看起來promiseQueue
中的Promise
對象似乎沒有根據其對應的response.on('end', ...)
進行更新。任何幫助將非常感激。
var http = require('http');
// Wraps an http GET request.
// Three attributes
// - data : String
// - resolved : boolean
// - error : Error
function Promise(url) {
this.resolved = false;
this.error = null;
this.data = '';
var self = this;
http.get(url, function(response) {
response.setEncoding('utf8');
response.on('data', function(data) {
self.data += data;
});
response.on('error', function(error) {
self.error = error;
self.resolved = true;
});
response.on('end', function() {
self.resolved = true;
});
});
}
var urls = process.argv.slice(2);
var promiseQueue = urls.map(function(url) {
return new Promise(url);
});
var promise;
while (promiseQueue.length) {
if (promiseQueue[0].resolved) {
promise = promiseQueue.shift();
console.log(promise.data);
}
}
好的答案。正是我錯過的信息。 –