作者yuhow (擦肩而过的岁月)
看板Ajax
标题[问题] 有关node.js的问题 (nodeschool)
时间Mon Oct 26 10:31:59 2015
各位JS大大先进们,
我最近在努力学习JS以及node.js
找了一些线上学习课程的网站来帮助自己入门,
可是在写到其中一个作业时,
发现不断地发生错误,
在尝试理解问题後还是不太知道怎麽解决或是我错在哪里,
以下是我的程式码以及官方给的解答,
请帮我看我错在哪边... 非常感谢大家的帮忙.
------------------------------------------------------------------------------
使用 http.get() 方法, 从命令列参数取得URL(网址)。
把每个网址的内容收集完整以後才显示在终端机(标准输出,stdout)上。
把资料以String的方式显示就好,一个网址一行,不用显示资料长度。
重点是必须以命令列参数的顺序显示这些资料。
这个是nodeschool提供的解答,
可以确实输出资料.
https://github.com/workshopper/learnyounode/blob/master/exercises/juggling_async/solution/solution.js
我自己的写法则是全部都直接盖,
没有另外写成function.
但是用来储存输出资料的阵列却是空的.
var http = require('http')
var bl = require('bl')
var results = []
var count = 0
function printResults () {
for (var i = 0; i < 1; i++)
console.log(results[i])
}
for (var index = 0; index < 1; index++) {
http.get(process.argv[2 + index], function (response) {
response.pipe(bl(function (err, data) {
if (err)
return console.error(err)
console.log(index)
results[index] = data.toString()
count++
if (count == 1)
printResults()
}))
})
}
自己尝试debug的时候,
发现导入的index变数
在要填写资料进入阵列时
"results[index] = data.toString()"
他的数值已经变成1,
於是资料填到不正确的长度上...
可否帮我检查一下, 我这样子更动程式码所会造成的问题吗?
非常感谢.
--
@@>
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.112.101.44
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1445826727.A.3C7.html
1F:推 y2468101216: 再取出index之前他就已经是1了,js是非线程执行。 10/26 11:52
2F:→ yuhow: 不是很理解...@@? 为什麽跑进去http.get後就变1 10/26 11:55
3F:→ yuhow: 请问可否提供一些资料让我读一下...Orz 10/26 11:55
4F:→ y2468101216: http.get是非同步,for回圈不会wait 10/26 11:59
5F:→ y2468101216: 你加入node.js台湾 FB社团,我有转贴你的问题 10/26 12:01
6F:→ yuhow: OK 感谢:) 10/26 12:13