在回调函数中访问全局变量
access global variable in callback function
我正在尝试修改 'resource.received' 回调函数中的 cookies 全局变量。不幸的是,它不像常规 javascript 那样工作。当我在回调中修改 cookie 时,它正在处理不同的 cookie 变量。当我 return 回到全局范围时,cookies 仍然是一个空字符串。
var cookies = "";
casper.on('resource.received', function(resource) {
for(var i=0;i<resource.headers.length;i++){
var header = resource.headers[i];
if(header['name'] == 'Set-Cookie'){
if(header['value'].length > 0){
cookies += " " + header['value'];
}
}
}
})
casper.echo(cookies);
如何在回调函数中访问这个全局变量以便修改它?
您实际上修改了正确的变量。
因为 casper.on 是异步的,你的 casper.echo 在你的 casper.on.
完成之前是 运行
如果您尝试在 .on 中的 for 循环后立即记录或回显,您将看到您要查找的内容。
我正在尝试修改 'resource.received' 回调函数中的 cookies 全局变量。不幸的是,它不像常规 javascript 那样工作。当我在回调中修改 cookie 时,它正在处理不同的 cookie 变量。当我 return 回到全局范围时,cookies 仍然是一个空字符串。
var cookies = "";
casper.on('resource.received', function(resource) {
for(var i=0;i<resource.headers.length;i++){
var header = resource.headers[i];
if(header['name'] == 'Set-Cookie'){
if(header['value'].length > 0){
cookies += " " + header['value'];
}
}
}
})
casper.echo(cookies);
如何在回调函数中访问这个全局变量以便修改它?
您实际上修改了正确的变量。
因为 casper.on 是异步的,你的 casper.echo 在你的 casper.on.
完成之前是 运行如果您尝试在 .on 中的 for 循环后立即记录或回显,您将看到您要查找的内容。