Ich habe eine Reihe von Funktionen verwendet, um Daten für meinen Dienst bereitzustellen. Ich möchte jeden von ihnen durchlaufen und anhalten, sobald einer von ihnen das gewünschte Ergebnis zurückgibt. Wenn der erste funktioniert, ist das in Ordnung. Wenn es eine Ausnahme oder Daten nicht gültig ist, möchte ich zum nächsten usw. gehen.bluebirdjs verspricht in eine for-Schleife gewickelt
Wie kann ich das erreichen? Ich habe den folgenden Code:
handleData: function(address) {
var self = this;
return new Promise(function (resolve, reject) {
for (var i = 0; i < self.listAllAvailableProviders.length; ++i) {
var handler = self.listAllAvailableProviders[i];
new handler().getData(address)
.then(function(value) {
Logger.info(value);
resolve(value);
})
.catch(function(err){
Logger.error(err);
})
}
reject("");
});
}
Wie kann ich es beheben, um zu stoppen, sobald der erste die richtigen Daten bekommt? Ich habe die bluebirdjs
Dokumentation vergeblich durchgelesen.
EDIT Ich habe eine break
Aussage nach resolve
und ich habe dies:
SyntaxError: Illegal break statement
at Object.exports.runInThisContext (vm.js:53:16)
at Module._compile (module.js:513:28)
at Object.Module._extensions..js (module.js:550:10)
at Module.load (module.js:458:32)
at tryModuleLoad (module.js:417:12)
at Function.Module._load (module.js:409:3)
at Module.require (module.js:468:17)
at require (internal/module.js:20:19)
Sie führen alle Ihre Anforderungen parallel im 'für 'Schleife. Wenn Sie ein Ergebnis gefunden haben, das Ihnen gefällt, wurden alle anderen Anfragen bereits gestartet. Sie können Ihre Anfragen nacheinander einzeln serialisieren und dann erst mit der nächsten Anfrage fortfahren, wenn Sie keine Antwort gefunden haben, die Ihnen gefällt. Ist es das was du willst? – jfriend00
Können Sie die Serialisierung einzeln erklären? Ich möchte die erste, die Erfolg hat, also wenn die eine nicht funktioniert, dann versuche die nächste. Dies verwendet 'sailsjs'. – KVISH
Erkläre was? Ich weiß nicht, welchen Teil meines Kommentars Sie nicht verstanden haben. Möchten Sie Ihre Anfragen serialisieren (einzeln ausführen)? – jfriend00