Ich habe versucht, Promise.all zu arbeiten, ohne Erfolg mit einer Liste von Versprechen, so versuchte es stattdessen mit nur einem Array von einem Versprechen, und ich bekomme das gleiche Problem:Promise.all nicht zurück
let tasks = [];
tasks.push(function(resolve, reject){
superagent
.post(URL_ROOT + url_path)
.send(data)
.end(function(err, res){
if(err)
reject(err);
assert.equal(res.status, status.UNAUTHORIZED); //401
console.log('Promise completed successfully');
resolve();
});
});
Promise.all([
new Promise(tasks[0])
]).then(function(){
console.log("Done");
done();
})
.catch(function(reason){
throw new Error(reason);
});
"Versprechen erfolgreich abgeschlossen" druckt einfach, aber dann hängt es nur, und "Fertig" wird nie gedruckt.
Jede Hilfe würde sehr geschätzt werden.
Es macht keinen Sinn. Wenn "Versprechen erfolgreich abgeschlossen" gedruckt wird, sollte auch "Fertig" gedruckt werden. – Lewis
Beachten Sie, dass Ihre Zusage niemals zurückgewiesen wird, wenn Ihre Assertion ausgelöst wird, und dass der "catch" -Rückruf bedeutungslos ist (wahrscheinlich sollte er mit einem Fehler "fertig" sein). – Bergi
@Bergi Ich muss zugeben, dass ich meine Versprechungen nicht dargelegt habe wie dies, und würde die Promise direkt zum Aufgaben-Array hinzufügen. Aber das OP sagte, er bekommt "Promise erfolgreich abgeschlossen" so die Behauptung, obwohl falsch kann hier nicht das Problem sein, da die Entschlossenheit sicher auch getroffen worden wäre. Das superagente Zeug zu entfernen, funktioniert in der Tat für mich. Verwendet das OP vielleicht eine bestimmte Promise-Lib, die nicht richtig funktioniert? – Keith