0

新节点,到目前为止我的理解是只有在当前函数完成时才会运行回调函数?我有这个权利吗?

我试图从 bing 搜索中抓取前 3 个结果,增加 i 然后再次运行,但控制台正在记录“回调”并在浏览器启动之前执行第二个循环。

任何有关使这项工作的最佳方式的建议将不胜感激。

function browse(rows, i, cb) {
  var asn = rows[i].id
  var name = rows[i].name
  console.log(name);
  client
    .url('https://www.bing.com')
    .setValue('#sb_form_q', '"' + name + '"')
    .click('#sb_form_go', function() {
      for (var i = 1; i < 4; i++) { //get first 3 results
        var loc = '#b_results > li:nth-child(' + i + ') > h2 > a';
        client.getAttribute(loc, 'href', function(err, text) {
          console.log(text);
          fs.appendFile("asnres.txt", asn + ":" + text + "\n", function(err) {
            if (err) {
              return console.log(err);
            }
          });
        });
      }
    });
  if (i != rows.length) {
    console.log("calling back");
    i++
    cb(rows, i)
  }
}

client.init().then(function() {
  browse(rows, i, browse)
});

4

0 回答 0