gpt4 book ai didi

javascript - Node.js 练习,使用来自 nodeschool.io 的异步

转载 作者:行者123 更新时间:2023-12-03 09:46:03 25 4
gpt4 key购买 nike

我是 Node 新手,我陷入了nodeschool.io的练习中,我无法理解为什么我的解决方案无效,我有一种感觉,我没有意识到一些明显的事情,但我不知道这是什么!

我的解决方案:

var http = require('http');
var bl = require('bl');
var results = [];
var count = 0;

function printResults () {
for (var i = 0; i < 3; i++)
console.log(results[i])
}

for(var i = 0; i < 3 ; i++){
http.get(process.argv[2 + i], function (response) {
response.pipe(bl(function (err, data) {
if (err)
return console.error(err)

results[i] = data.toString();

count++

if (count == 3)
printResults()
}))

})
}

正确的解决方案:

var http = require('http');
var bl = require('bl');
var results = [];
var count = 0;

function printResults () {
for (var i = 0; i < 3; i++)
console.log(results[i])
}

function getDataa(i){
http.get(process.argv[2 + i], function (response) {
response.pipe(bl(function (err, data) {
if (err)
return console.error(err)

results[i] = data.toString();

count++

if (count == 3)
printResults()
}))

})
}

for(var i = 0; i < 3 ; i++)
getDataa(i);

为什么当我直接放入for循环时不起作用?

谢谢

最佳答案

已经解决了,我错过了关于异步编程的基本法则:

在此页面https://docs.nodejitsu.com/articles/getting-started/control-flow/how-to-write-asynchronous-code .

在“异步代码的陷阱”部分说明了我无法理解的问题

无论如何,感谢 Abe Miessler 的关注。

关于javascript - Node.js 练习,使用来自 nodeschool.io 的异步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31029986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com