Ich habe ein ernstes Problem mit Node.js
Ich entwickle eine API, um Daten von Facebook-Datenbanken mit GraphQL zurück zu bekommen und dann zurück senden JSON mit ausgewählte Daten.JSON - Warten auf Schleife zu beenden und dann Daten zum Rückruf
Das Problem kommt, wenn ich (mit einer for-Schleife) durch das Antwort-Array iteriert, um die nützlichen Daten auszuwählen, ich weiß nicht, wie man alle Daten erhält und dann an den Client senden. Ich dachte, dass bei jeder Iteration die Callback-Aufruf wäre schön, aber es hat nicht das Problem
Hier zu lösen, ist der Code von meiner API
Lesen von Daten aus GraphQL
FB.api (‘ me/feed ', ...) gibt ein Array aller Daten zurück.
Der zweite Aufruf gibt einzelne Posten Details, das ist der wichtigste Teil (ich habe eine Reihe von diesen Details an den Client im JSON-Format zurückzukehren)
module.exports = function (start, end, callback) {
if (start > end) throw 'Start is greater than end';
FB.api('me/feed', function (res) {
// Error handling
if (!res || res.error) {
throw 'FB error occurred: ' + res.error;
}
console.log('FB: OK');
for (let i = start; i < res.data.length && i != end; i++) {
FB.api(res.data[i].id + '/attachments', function(post) {
callback({
id: res.data[i].id,
type: post.data[0].type,
postDesc: res.data[i].message.split('\n\n')[0],
postUrl: post.data[0].url,
imagePreviewUrl: post.data[0].media.image.src
});
});
}
});
}
Sie könnten in eine Bibliothek wie [async] (http://caolan.github.io/async/) schauen oder Versprechen verwenden. – forrestmid
Ich versuchte mit async lib, aber ich weiß nicht, was zu verwenden, ich habe mit async.seq getestet, aber das Ergebnis ist das gleiche, ich muss warten, um die for-Schleife zu synchronisieren oder es gibt ein leeres Array zurück –