NodeJS回调和异步问题

时间:2015-08-12 12:00:22

标签: node.js callback webdriver-io

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

我试图从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)
});

0 个答案:

没有答案