Abschnitt, der den Code aufruft.Daten außerhalb der Anforderung sind nicht definiert.
** index.js **
var express = require('express');
var request = require('request');
var cheerio = require('cheerio');
var RagialJS = express();
RagialJS.get('/scrape', function(req, res){
console.log(getItemJSON("Minor Brisket", "Renewal"));
}) // End RagialJS.get
Ich erwarte, dass dies ein JSON-Objekt drucken, gibt aber nicht definiert.
** getItemJSON() **
// Returns buy, sell, and metrics of item as a JSON
function getItemJSON(itemName, server) {
var url = getItemURL(itemName, server);
request(url, function(error, response, html) {
if(!error && response.statusCode == 200) {
var $ = cheerio.load(html);
// Logic that parses and puts data in JSON here...
// console.log(json); works here
return json;
} else {
console.log(error);
}
}); // End request
// console.log(json); DOESN'T works here
}
Das hier Problem ist, dass, wenn ich console.log(json);
, bevor die Anforderung endet dann funktioniert es gut, aber wenn ich es außerhalb des Antrags zu tun (oder eine andere Funktion), dann gibt es nicht definiert. (Dasselbe Problem für getItemURL()
)
Gibt es eine Möglichkeit, dieses Problem zu beheben? Oder übersehe ich eine grundlegende Idee über Datenanforderungen?
Full Source Code if interested
Jede Hilfe oder Kommentare sind willkommen.