Как вызвать функцию внутри SpookyJS?

У меня есть функция под названием clickMore:

function clickMore(max, i){
   i = i || 0;
   if ((max == null || i < max) && this.visible(moreButton)) { // synchronous
      // asynchronous steps...
      this.thenClick(moreButton);  // sometimes the click is not properly dispatched
      this.echo('click');
      this.waitUntilVisible(loadingButton);
      this.waitUntilVisible(moreButton, null, function onTimeout(){
         // only placeholder so that the script doesn't "die" here if the end is reached
      });
      this.then(function(){

         //this.capture("business_"+i+".png");   //captures a screenshot of the page
         clickMore.call(this, max, i+1); // recursion
      });
   }
}

Я хотел бы вызвать эту функцию из Spooky здесь:

spooky.then(function(){
              clickMore.call(spooky);
          })

Я просмотрел документы Spooky и знаю, что мне, вероятно, понадобится использовать кортеж функции, но я не уверен, как это реализовать. Как я могу сделать это?

ОБНОВИТЬ:

Попытка использовать кортеж функции из документации SpookyJS без удачи:

spooky.then([{
   clickMore: clickMore
}, function(){
    clickMore.call(spooky);
}]);

1 ответ

Решение

Функции переданы в spooky.then будет выполняться в среде JavaScript Casper/PhantomJS. У них нет доступа к среде Spooky Node.js JS.

spooky.then([{
   clickMore: clickMore
}, function(){
    clickMore.call(spooky); // <- spooky is not defined here
}]);

Пожалуйста, взгляните еще раз на то, что говорит на вики-странице Введение о средах JavaScript и на то, что они изолированы.

Другие вопросы по тегам