gpt4 book ai didi

javascript - 需要在同步 CasperJS 中运行 for 循环和 WaitFor

转载 作者:行者123 更新时间:2023-11-30 10:28:35 25 4
gpt4 key购买 nike

我有如下代码

var casper = require('casper').create();
casper.on('remote.message', function (msg) {
this.echo(msg);
});



casper.start( << some url >> , function () {
this.echo(this.getTitle());


});
var resultObj = [];
casper.thenClick("#AddToCart").then(function () {
// scrape something else

casper.options.waitTimeout = 100000;

var objectOne = this.evaluate(someFunction, << variables >> );
//above function returns object
casper.each(objectOne, function (self, obj) {



var anotherObject = this.evaluate(anotherFunction, << variables >> );

self.waitFor(function check() {

var result = this.evaluate(thirdFunction, obj);
if (result != 'no') {
resultObj.push(result);


}

// result = 'yes';
return result != 'no';
this.evaluate(function () {});
}, function then() {


console.log('done')


});


});
});

casper.run(function () {
this.exit();
});

它包含一个循环 (.each),然后是等待。我面临的问题是循环被完全执行,然后 waitFor 被执行。我怎样才能使它们同步?

最佳答案

看起来你会想要使用 casper.eachThen() 而不是 casper.each()

警告:您至少需要 CasperJS 1.1-beta1 才能运行它。

我无法从你的代码中得到太多,但看起来你可能还想将一些 casper.evaluate() 更改为 casper.thenEvaluate( )

我在下面修改的代码周围添加了 //---。希望对您有所帮助。

var casper = require('casper').create();
casper.on('remote.message', function (msg) {
this.echo(msg);
});

casper.start( << some url >> , function () {
this.echo(this.getTitle());
});
var resultObj = [];
casper.thenClick("#AddToCart").then(function () {
// scrape something else

casper.options.waitTimeout = 100000;

var objectOne = this.evaluate(someFunction, << variables >> );
//above function returns object

// ---
casper.eachThen(objectOne, function (response) {
// ---

var anotherObject = this.evaluate(anotherFunction, << variables >> );

this.waitFor(function check() {
// ---
var result = this.evaluate(thirdFunction, response.data);
// ---

if (result != 'no') {
resultObj.push(result);
}

// result = 'yes';
return result != 'no';
this.evaluate(function () {});
}, function then() {
console.log('done')
});


});
});

casper.run(function () {
this.exit();
});

关于javascript - 需要在同步 CasperJS 中运行 for 循环和 WaitFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18300655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com