node.js,在for循环上执行函数时无法从回调中获得响应

时间:2014-03-10 12:23:19

标签: node.js loops for-loop login callback

我想进行模拟,例如在node.js中登录web应用程序的多个用户 我有一个函数login(),我在for循环中执行它来模拟许多用户的日志 但是当maxThreads> 5,有时候我没有收到来自回调的回复来请求函数login() 我的代码是:

var request = require("request");
var cheerio = require("cheerio");


function login(i){
request({
  uri: "http://example.com/sign_in",
  method: "POST",
  timeout: 1000,
  followAllRedirects: true,
  form: {
    email: "mail@example.com",
    password: "password"
  }      
}, function (error, response, body) {
    var $ = cheerio.load(body);
    var title = $("title");
    console.log(title.html()+ "-" + i );             
});
}

var maxThreads = 10
for(i=0; i<maxThreads; i++){
  login(i)
}

示例输出:

null-5
null-6
null-7
null-8
null-9
Exapmle title-0
Exapmle title-1
Exapmle title-3
Exapmle title-2
Exapmle title-4

我的问题:我有更多线程 - 我有更多的空响应

1 个答案:

答案 0 :(得分:0)

您可以使用async模块而不是for循环。这样您就可以更好地控制控制流程。