J'utilise une promesse chaînée en JavaScript (je pense). Il y a une fonction then() dans la chaîne. Je veux accéder à la variable dans la promesse, ou renvoyer la variable via mon objet de réponse HTTP.Accéder aux variables à l'intérieur d'une chaîne de promesses Javascript
var getTitle = function(response)
{
console.log("Starting getTitle. response: " + response); //this works
var horseman = new Horseman(); // object for headless browser
horseman
.userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0")
.open('http://www.google.com/ncr')
.type('input[name="q"]', 'github')
.click("button:contains('Google Search')")
.keyboardEvent("keypress",16777221) // press Enter
.waitForSelector("div.g")
.title() // gets the title of the page
.then(function(t) {
console.log("title: " + t); // this works
})
.close();
console.log("title outside: " + t); // this gives 'undefined'
return t; // returns 'undefined'
}
Comment puis-je extraire la variable 't'? J'ai également essayé de passer 'réponse' dans la fonction comme
.then(function(t, response) {
Mais quand je connecte 'réponse', il est indéfini. Si je pouvais transmettre l'objet réponse d'une manière ou d'une autre, cela fonctionnerait aussi.
Si je
var test = horseman...
test devient un objet de promesse, mais il ne contient pas la variable t.
Je ne suis pas sûr de ce que vous essayez d'accomplir, Vous dites que le titre est à juste titre disponible dans la fonction .then. Essayez-vous de renvoyer cela à l'appelant de la fonction? –
Oui. Eh bien, le but est d'avoir 'response' et' t' accessibles dans la même portée. – user3320795