在恶梦js等待javascript函数

时间:2017-06-11 23:32:31

标签: javascript node.js nightmare

我遇到了梦魇js的.wait()函数问题。我正在尝试等待javascript函数返回true,然后继续执行脚本的其余部分。有没有办法做到这一点,因为我试过的两种方式都不起作用。谢谢,所有的帮助表示赞赏。

var ifCompleted = function(){
     for(var i = 0; i < 101; i++){
          if(i == 100){
               return true;
          }
     }

}

nightmare
     .goto('http://www.google.com')
     .wait(function () {
          return typeof ifCompleted() !== undefined;
     })
     .goto('http://www.yahoo.com/')
     .catch(function (error) {
          console.error('Search failed:', error);
     });

下一个等待功能也不起作用。

.wait(function () {
    return (ifCompleted() === true);
})

这也不起作用。

.wait(function () {
    return (ifCompleted() != null);
})

此代码是假设的.wait(100)不是我想要做的

1 个答案:

答案 0 :(得分:0)

我认为你想使用then()。

const Nightmare = require('nightmare');
var nightmare = Nightmare({
  show: true,

});

nightmare
  .goto('http://www.google.com')
  .wait(1000)
  .evaluate(function() {
    return "Return after 1 second";
  })
  .then(function(result) {
    console.log(result);
    nightmare.goto('http://www.yahoo.com/')
      .wait(1000)
      .then(function() {
        console.log("Welcome to yahoo.")
      }).catch(function(err) {
        console.log(err);
      });
  }).catch(function(err) {
      console.log(err);
  });

您可能需要选中检查https://github.com/rosshinkley/nightmare-examples/blob/master/docs/common-pitfalls/async-operations-loops.md