Ich versuche mehrere asynchrone Anforderungen in JS zusammen zu ketten. Im Grunde möchte ich die Künstlerinformationen von der LastFM-API abrufen und dann diese Informationen nach ihren besten Titeln durchsuchen.Mehrere Versprechen Anforderungen verkettet in Javascript
Bis jetzt kann ich die Künstlerinfo erfolgreich erhalten, es zurückgeben lassen, und es druckt die Info im folgenden Schritt aus. Sobald ich jedoch versuche, meine zweite Anfrage für die Top-Tracks zu machen, wird der Body nie gedruckt und es geht sofort weiter zum nächsten Schritt.
Ich habe viele verschiedene Kombinationen dieses Codes mit verschiedenen Arten von Anfragen und dergleichen ausprobiert, aber ich habe kein Glück bekommen. Ich möchte nur erfolgreich 1 anfordern, wenn es erfolgreich ist, dann folge es von anderen in einer ordnungsgemäßen Reihenfolge.
var artistInfo = {
method: 'GET',
url: 'http://localhost:3000/users/db/artistInfo/' + artistName
};
var topTracks = { method: 'GET',
url: 'http://localhost:3000/users/db/topTracks/' + artistName
};
/* Dependencies */
var Promise = require('bluebird');
var reqP = Promise.promisifyAll(require('request-promise'));
reqP(artistInfo)
.then(function(info) {
console.log("got here 1");
return info;
})
.then(function(artist) {
console.log(artist);
reqP(topTracks)
.then(function(body) {
console.log(body);
console.log("got here 2");
return body;
});
return 'test';
})
.then(function(content) {
console.log(content);
return 'test2';
})
.catch(function(err) {
throw err;
});
Warum Sie diese beiden Anfragen Sequenzierung sind zu vermeiden? Man scheint nicht von dem anderen abhängig zu sein. Sie könnten sie parallel starten und 'Promise.all()' verwenden, um zu sehen, wann beide fertig sind. – jfriend00