Wie promote ich das AWS JavaScript SDK?
Ich will das aws-sdk in JavaScript mit Hilfe Versprechen.
Anstelle der Standard-callback-Stil:
dynamodb.getItem(params, function(err, data) {
if (err) console.log(err, err.stack); //an error occurred
else console.log(data); //successful response
});
Ich stattdessen verwenden möchten Versprechen Stil:
dynamoDb.putItemAsync(params).then(function(data) {
console.log(data); //successful response
}).catch(function(error) {
console.log(err, err.stack); //an error occurred
});
InformationsquelleAutor der Frage Martin Kretz | 2014-10-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Überfällig, aber es ist ein aws-sdk-Versprechen npm-Modul, das vereinfacht diese.
Dieser fügt nur ein Versprechen () - Funktion, die verwendet werden können, wie diese:
BEARBEITEN: Es ist schon ein paar Jahre her, seit ich schrieb diese Antwort, aber da es scheint zu sein, immer up-votes in letzter Zeit, ich dachte, ich würde aktualisieren:
aws-sdk-promise
ist veraltet, und neuere (wie in den letzten paar Jahren) Versionen von aws-sdk enthält eingebaute Versprechen Unterstützung. Die promise-Implementierung zu verwenden, können konfiguriert werden, durchconfig.setPromisesDependency()
.Beispielsweise
aws-sdk
zurückQ
verspricht, ist die folgende Konfiguration kann verwendet werden:Den
promise()
Funktion wird dann zurückQ
verspricht direkt (bei Verwendungaws-sdk-promise
mussten Sie wickeln jede zurückgegebene Versprechen, manuell, z.B. mitQ(...)
zu bekommenQ
verspricht).InformationsquelleAutor der Antwort JHH
Die Version 2.3.0 der AWS-JavaScript-SDK Unterstützung für verspricht: http://aws.amazon.com/releasenotes/8589740860839559
InformationsquelleAutor der Antwort Majix
Können Sie ein Versprechen-Bibliothek, die nicht promisificationz.B. Bluebird.
Hier ist ein Beispiel, wie promisify DynamoDB.
Nicht, können Sie hinzufügen
Async
zu jeder Methode erhalten Sie die promisified version.InformationsquelleAutor der Antwort Martin Kretz
Leute,
Ich habe nicht in der Lage gewesen, die
Promise.promisifyAll(Object.getPrototypeOf(dynamoDb));
Jedoch die folgenden arbeitete für mich:
oder
InformationsquelleAutor der Antwort Cmag
Ich glaube Anrufe können nun angehängt werden, mit
.promise()
zu promisify der gegebenen Methode.Können Sie sehen, es beginnen, eingeführt in 2.6.12 https://github.com/aws/aws-sdk-js/blob/master/CHANGELOG.md#2612
Sehen Sie ein Beispiel für den Einsatz in AWS-blog https://aws.amazon.com/blogs/compute/node-js-8-10-runtime-now-available-in-aws-lambda/
InformationsquelleAutor der Antwort DefionsCode
CascadeEnergy/aws-versprochen
Wir haben immer im Gange npm-Modul
aws-promised
die nicht die bluebird promisify von jedem Kunden die aws-sdk. Ich bin nicht sicher, es ist besser, mit deraws-sdk-promise
Modul oben erwähnt, aber hier ist es.Brauchen wir Beiträge, wir haben nur die Zeit genommen, um promisify die Kunden, die wir tatsächlich verwenden, aber es gibt viel mehr zu tun, so tun Sie es bitte!
InformationsquelleAutor der Antwort nackjicholson
Mit async/await fand ich den folgenden Ansatz zu sein, ziemlich sauber und fest, dass Sie dasselbe Problem für mich für DynamoDB. Dies funktioniert mit ElastiCache für Redis als gut. Nicht erforderlich ist, alles, was nicht kommen mit dem Standard-lambda Bild.
InformationsquelleAutor der Antwort C.J.