2015-07-29 4 views
1

J'essaie de modifier la variable globale cookies dans la fonction de rappel 'resource.received'. Malheureusement, cela ne fonctionne pas comme javascript régulier. Lorsque je modifie les cookies dans le rappel, il travaille sur une variable de cookies différente. Quand je reviens à la portée globale, les cookies restent une chaîne vide.accéder à la variable globale dans la fonction de rappel

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); 

Comment puis-je accéder à cette variable globale dans la fonction de rappel, je peux le modifier?

+0

Vous devriez renvoyer la variable "cookies" modifiée dans le rappel de l'événement 'resource.received'. –

+0

@JonasSciangulaStreet Où puis-je stocker la réponse écho? – Donato

+0

Utilisez-vous une requête asynchrone? Si oui, il n'y a pas d'attente pour le rappel est prêt! – schellingerht

Répondre

2

Vous modifiez réellement la variable correcte.

Parce que casper.on est asynchrone, votre casper.echo est en cours d'exécution avant la fin de votre casper.on.

Si vous tentez de vous connecter ou d'effectuer un écho immédiatement après votre boucle for en .on, vous verrez ce que vous cherchez.

+0

On dirait que vous avez raison. J'ai été capable de résoudre cela en utilisant casper.then (function() {... – Donato