我正在运行以下形式的事件循环:
var i;
var j = 10;
for (i = 0; i < j; i++) {
asynchronousProcess(callbackFunction() {
alert(i);
});
}
Run Code Online (Sandbox Code Playgroud)
我试图显示一系列显示数字0到10的警报.问题是,当回调函数被触发时,循环已经经历了几次迭代并且它显示了更高的值i.有关如何解决此问题的任何建议?
这是我的代码:
var links = [];
var casper = require('casper').create();
function getLinks() {
var links = document.querySelectorAll('div#mw-content-text table.wikitable tbody tr td i b a');
return Array.prototype.map.call(links, function(e) {
return 'https://en.wikipedia.org' + e.getAttribute('href');
});
}
casper.start('https://en.wikipedia.org/wiki/David_Bowie_discography');
casper.then(function() {
// aggregate results for the 'casperjs' search
links = this.evaluate(getLinks);
});
casper.each(links, function (self, link) {
self.thenOpen(fullURL, function () {
this.echo(this.getTitle() + " - " + link);
});
});
casper.run();
Run Code Online (Sandbox Code Playgroud)
我知道links从Quickstart复制时会创建它,但我随后修改它以打开找到的所有链接.
我得到的是没有任何回声,而不是输出每个标题,这是我所期望的.这就是我调用文件的方式:
~ $ casperjs …Run Code Online (Sandbox Code Playgroud)