hier ist eine andere nehmen bei gleicher Funktionalität: spex.batch
die source code wäre zu viel hier re-post, also hier nur ein Beispiel aus dem batch processing, wie es zu benutzen:
var spex = require('spex')(Promise);
// function that returns a promise;
function getWord() {
return Promise.resolve("World");
}
// function that returns a value;
function getExcl() {
return '!';
}
// function that returns another function;
function nested() {
return getExcl;
}
var values = [
123,
"Hello",
getWord,
Promise.resolve(nested)
];
spex.batch(values)
.then(function (data) {
console.log("DATA:", data);
}, function (reason) {
console.log("REASON:", reason);
});
Diese Ausgänge:
DATA: [ 123, 'Hello', 'World', '!' ]
Nun wollen wir es durch Ändern getWord
dazu nicht machen:
function getWord() {
return Promise.reject("World");
}
Jetzt ist die Ausgabe:
REASON: [ { success: true, result: 123 },
{ success: true, result: 'Hello' },
{ success: false, result: 'World' },
{ success: true, result: '!' } ]
dh das gesamte Array angesiedelt ist, Reporting indexgebundene Ergebnisse.
Und wenn statt den gesamten Grund berichten wir getErrors()
nennen:
console.log("REASON:", reason.getErrors());
dann wird der Ausgang sein:
REASON: [ 'World' ]
Dieses nur einen schnellen Zugriff auf die Liste der Fehler zu vereinfachen ist, die aufgetreten .
Schön, obwohl für jetzt werde ich bei der Verwendung von Q bleiben (was wahrscheinlich das gleiche tut). – Zlatko
In Bezug auf Ihren Schritt 4, wie würde ich jemals wissen, das neue Versprechen abzulehnen? –
@torazaburo du hast Recht, du würdest es niemals ablehnen, das ist der Punkt von allSettled :) Vielleicht ein Timeout, aber das ist ein anderer Anwendungsfall und nicht widerspiegeln, was q.allSettled tut. – Zlatko