Warum werden diese beiden Codefragmente anders ausgegeben? In der ersten, wenn ich ausstehe, bekomme ich ausstehende Versprechen (wenn ich den tatsächlichen Wert haben möchte).Wie erwartet man den aufgelösten Wert einer ES6 Javascript async Funktion?
(() => {
let message = {
actions: [{}]
};
message.actions = message.actions.map(async action => {
action.result = {};
action.result.startAt = await "whatever";
return action;
});
console.log(message);
})();
Und in diesem zweiten Code-Schnipsel, erhalte ich den Wert tatsächlich aufgelöst ...
(async() => {
let message = {
actions: [{}]
};
message.actions[0].result = {};
message.actions[0].result.startAt = await "whatever";
console.log(message);
})();
Asynchron-Funktionen ein Versprechen zurück, wenn ausgeführt, ihre aufgelösten Werte sind in 'dann()' Rückrufen. Also macht Ihr erster Ausschnitt nur eine Reihe von Versprechen. Ihr zweites Snippet protokolliert einfach ein Objekt in einer asynchronen Funktion und protokolliert das Ergebnis der asynchronen Funktion nicht. –
'async' wird nicht am ersten Beispiel verwendet – guest271314
Richtig, aber wie kann ich die console.log vollständig auf die aufgelösten Werte warten? In meinem tatsächlichen Code ist die console.log eine Push-to-SNS-Warteschlange, und ich bekomme "Pending Promise" als Wert. – pjb