函数调用一次,但触发多次
Function called once, but firing multiple times
以下是PhantomJS脚本的片段。它跟踪 AJAXd 网页上的动态内容。track() 被调用一次,但由于某种原因 page.open() 被调用了 3 次
function track(url){
console.log('Tracking',url);
var page = require('webpage').create();
console.log('check2')
if(page){
console.log('check4');
page.open(url, function (status) {
console.log('check3');
if (status !== 'success') {
console.log('Unable to load the address!');
setTimeout(function(){start();},1000);
setTimeout(function(){page.release();},5000);
}
else {
console.log('check');
var i = 0;
var last_winner = false;
var logged_once = false;
var interval = false;
if(!interval){
interval = setInterval(function(){
var scraping = scrape(page);
var date = new Date();
var time = date.getTime();
if(scraping){/*Bunch of console logs*/}
else{
console.log('Bidding ended');
clearInterval(interval);
setTimeout(function(){start();},1000);
setTimeout(function(){page.release();},5000);
}
scraping = false;
},1000);
};
};
});
};
};
将以下内容记录到控制台:
Tracking http://www.google.com
check2
check4
check3
check
check3
check
check3
check
由于某种原因我无法弄清楚,page.open() 被调用了 3 次。
显然,
如果页面上加载了重定向或 iFrame,PhantomJS 会多次调用 page.open。
有一些关于如何在PhantomJS错误跟踪器上处理这个问题的建议。
http://code.google.com/p/phantomjs/issues/detail?id=353&q=open%20callback
相关文章:
- 使用多个依赖项加载只进行一次AJAX调用
- JavaScript只有在最后一次被调用时才运行函数
- 如何在下一次 AJAX 调用中访问从一个 AJAX 调用返回的变量
- 如何每 10 秒调用一次 JS 函数,然后以角度激活一个函数
- 节点 js 在启动时调用函数一次
- 一段时间后调用函数,但只调用一次
- Javascript只使用setInterval()调用一个子函数一次
- 什么时候函数只能调用一次
- 如何在重复满足条件时调用一次辅助函数
- JS:.apply(null,arguments)——为什么我的函数被调用一次,而console.log被调用多次
- 一次又一次地调用功能
- 全局 JS 文件:仅执行一次 JSON 调用
- 如何在上一次 JQuery 调用后访问 DOM
- 一次 Ajax 调用中有 2 个 URL
- jQuery一次又一次地调用该函数
- jQuery移除两次函数调用
- 如何在一次AJAX调用后避免回调地狱
- Ajax一次又一次地调用同一个类
- 我如何找出多少次函数调用javascript/jquery
- 如何在第二次函数调用中访问已选中的单选按钮的值