我是新來的JavaScript和node.js的,所以這可能是基本的JavaScript問題..Node.js的「LearnYouNode」雜耍異步功能不能正常工作
我解決這個LearnYouNode雜耍異步的問題,但我不知道爲什麼我的代碼無法正常工作。
我的代碼:
const http = require('http');
var URLs = [process.argv[2], process.argv[3], process.argv[4]];
var strs = ["", "", ""];
var ctr = 0;
for(var i = 0; i < 3; i++){
http.get(URLs[i], (response) => {
response.setEncoding('utf8');
response.on('data', (data) => {
strs[i] += data;
});
response.on('end',() => {
ctr++;
if(ctr == 3){
console.log(strs[0]);
console.log(strs[1]);
console.log(strs[2]);
}
});
});
}
我的代碼不能正常工作,但是這個代碼:
const http = require('http');
var URLs = [process.argv[2], process.argv[3], process.argv[4]];
var strs = ["", "", ""];
var ctr = 0;
function httpGet(i){
http.get(URLs[i], (response) => {
response.setEncoding('utf8');
response.on('data', (data) => {
strs[i] += data;
});
response.on('end',() => {
ctr++;
if(ctr == 3){
console.log(strs[0]);
console.log(strs[1]);
console.log(strs[2]);
}
});
});
}
for(var i = 0; i < 3; i++){
httpGet(i);
}
的代碼只能通過使得它作爲一個功能。爲什麼是這樣?
編輯: 問題是,「strs [i] + = data」部分不起作用!
- 實際:「」
預期:「作爲跨爲松節油如何gutful祛斑你這個小開膛去商場逗留的伴侶你的小松土溪山」
實際:「」
預期:「枯燥的奶吧,當瘋狂的安博脫穎而出像stickybeak我可以得到一些惡棍,他並沒有一個走私鸚鵡和脫穎而出像一個秀小馬」
實際:「」
預計:「你的小松土鬥雞我們要去挖掘機。抓住我們一隻灌木牡蠣,讓你的小蘿蔔德羅堆起來。讓我們得到一些蘋果隊友的compo。 「
實際:‘’
- 預期:‘’
什麼部分不工作?你會得到什麼錯誤? – MarthyM
[JavaScript閉合內循環 - 簡單實用示例]的可能重複(https://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example) –