Wie loop-Wunsch-Versprechen-API-Anforderung nennen?
Ich versuche es zu lernen Node.JS und ich bin eingeführt, um die Wunsch-Versprechen-Paket. Ich benutze es für die API-Aufruf, aber ich Stand vor einem problem, wo ich nicht gelten-Schleife, um es.
Dies ist die Beispiel zeigt einen einfachen API-Aufruf:
var read_match_id = {
uri: 'https://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/V001',
qs: {
match_id: "123",
key: 'XXXXXXXX'
},
json: true
};
rp(read_match_id)
.then(function (htmlString) {
//Process html...
})
.catch(function (err) {
//Crawling failed...
});
Wie kann ich eine Schleife wie diese:
var match_details[];
for (i = 0; i < 5; i++) {
var read_match_details = {
uri: 'https://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/V001',
qs: {
key: 'XXXXXXXXX',
match_id: match_id[i]
},
json: true //Automatically parses the JSON string in the response
};
rp(read_match_details)
.then (function(read_match){
match_details.push(read_match)//push every result to the array
}).catch(function(err) {
console.log('error');
});
}
Und wie kann ich wissen, wenn alle die async-request fertig sind?
Promise.all
ist, was Sie brauchen, um zu lernen- vielen Dank für Ihre Antwort ...
- Manchmal Lehre einen Mann zu Fischen ist besser als ihm einen Fisch
- stimmt, dass.. erm ... kann ich bitte wieder die Frage aus der Antwort Balg? Ist dies der beste Ansatz zur Behandlung von async-request? oder ist dies nur das komplizierter?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Anfrage-Versprechen nutzt Bluebird für Versprechen.
Die einfache Lösung ist
Promise.all(ps)
, wops
array Versprechungen.Der einzige Nachteil dabei ist, das gehen wird zum catch-block unmittelbar nach dem Versprechen abgelehnt. 4/5 behoben, wird nicht egal, 1 abgelehnt wird, werfen Sie es alle zu fangen.
Alternativer Ansatz ist die Verwendung von Bluebird Inspektion (finden Sie diese). Wir werden anzeigen aller Versprechungen, um Ihre Reflexion, die wir tun können, eine if/else-Analyse für jedes Versprechen, und es funktioniert sogar, wenn eines der Versprechen wird abgelehnt.
Hoffe, dies wird Ihr problem lösen.