Ich bin neue Konzepte zu versprechen und zu versuchen, meinen Kopf herum zu wickeln, aber jetzt I`` ist hier verwirrtWie löst man ein Versprechen?
const request = require("request");
const cheerio = require("cheerio");
const XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
var url = require("url");
module.exports = {
resturant: resturant,
};
var resturanttables = [];
function resturant(url, day) {
return new Promise(function(resolve, reject) {
request(url, function(error, response, html) {
if (error) {
return reject(error);
} else if (response.statusCode !== 200) {
return reject("Something is wrong! CINEMA")
}
httplogin("zeke", "coys", url, day);
console.log(resturanttables, "i am here");
resolve(resturanttables);
});
});
}
function httpafterlogin(url, cookie, day) {
request.get({
headers: {
'content-type': 'text/html',
'Cookie': cookie
},
url: url,
},
function(error, response, body) {
console.log(day)
var $ = cheerio.load(body);
if (day === "Friday") {
$(".WordSection2 p span ").each(function(li) {
// console.log(day, $(this).text())
resturanttables.push($(this).text());
console.log(resturanttables, "nside");
});
} else if (day === "Saturday") {
$(".WordSection4 p span").each(function(li) {
resturanttables.push($(this).text())
});
} else {
$(".WordSection6 p span").each(function(li) {
resturanttables.push($(this).text())
});
}
});
}
function httplogin(username, password, urls, day) {
request.post({
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
url: urls,
form: {
"username": username,
"password": password
}
}, function(error, response, body) {
var cookie = response.caseless.dict['set-cookie'][0];
var location = response;
console.log(response.statusCode);
cookie = cookie.substring(0, cookie.indexOf(';'));
// httpafterlogin('http://vhost3.lnu.se:20080/dinner/'+response.headers.location, cookie);
var newurls = url.resolve(urls, response.headers.location)
httpafterlogin(newurls, cookie, day);
// console.log(response.headers, "jdjdjjdjdjjdjdjdjjdjjdjdj")
});
}
und ich rufe dann die Funktion
loadPage.resturant("http://vhost3.lnu.se:20080/dinner/login", "Friday").then(function(data) {
console.log(data, "did it work now ")
})
das Problem ist, dass es das gibt leeres Array. Aber als ich versuchte zu überprüfen und console.log in der afterlogin Funktion und ich konnte sehen, dass das Array tatsächlich gefüllt war, aber dieser Code läuft, nachdem das Versprechen gelöst wurde. Kurz gesagt: Wie kann ich die Auflösung im Restaurant versprechen, die Daten nicht zu senden, bis die Login-Funktion abgeschlossen ist?
mit anderen worten wie kann ich das gefüllte array mit informationen von afterlogin funtion bekommen?
Ich sehe nichts falsch ... vielleicht haben Sie ein wenig Code oder etwas weggelassen? Wenn 'data' Ihr Array enthält, dann ist alles gut. –
'httpafterlogin' benötigt das gleiche Setup wie das andere. –
Aber wie Kevin B ich versuchte, aber es funktioniert nicht – Alex