0

我遇到一个问题,即某些代码延迟或以随机顺序写入控制台,我哪里出错了?

var request = require('request');
var vFind = 'HelloWorld';
var vFound = false;
var vSites = ['http://www.youtube.com','http://www.gmail.com','http://www.apple.com','http://www.live.com','http://www.msn.com','http://www.yahoo.com','http://www.bing.com','http://www.purple.com','http://www.abc.xyz','http://www.reddit.com','http://www.stackoverflow.com','http://www.newgrounds.com','http://www.twitter.com','http://www.flickr.com','http://www.paypal.com','http://www.mediafire.com','http://www.mega.co.nz','http://www.soundcloud.com','http://www.slack.com','http://www.discordapp.com','http://www.trello.com','http://www.ninite.com','http://www.imgur.com','http://www.interacts.js','http://www.drive.google.com'];

  for (j = 0; j < (vSites.length); j++){
    request(vSites[j], function (error, response, vBody) {
      for (i = 0; i < (vBody.length); i++){
        if (vBody.substr(i,vFind.length) == vFind && vFound == false){
          vFound = true;
          break;
        }
      }
      if (vFound == false)
        console.log(vSites[j]+" didn't have it...");
      else if (vFound == true){
        console.log(vSites[j]+" has it!");
        vFound = false;
      }
    });
  }
4

1 回答 1

1

这是您所做的伪代码:

对于 vSites 中的每个网站,发出 HTTP 请求。请求完成后,运行此函数:

function (error, response, vBody) {
  for (i = 0; i < (vBody.length); i++){
    if (vBody.substr(i,vFind.length) == vFind && vFound == false){
      vFound = true;
      break;
    }
  }
  if (vFound == false)
    console.log(vSites[j]+" didn't have it...");
  else if (vFound == true){
    console.log(vSites[j]+" has it!");
    vFound = false;
  }
 }

发生的情况是:所有请求都已发出,然后当响应到达客户端时,调用上述函数。Google 可能会比 YouTube 等更快地返回响应……如果您想保持这些内容井井有条,您应该查看 Promises。

于 2017-04-10T01:10:10.287 回答