Using Node AWS SDK which supports callbacks and promises.. /
Using q as promise library..
AWS.config.setPromisesDependency(q);
const headObjProm = this.s3Client.headObject(headParams).promise();
headObjProm
.then(ret => {
//ret is promise..
})
console logging ret
shows..
(resolve, reject) {
self.on('plete', function(resp) {
if (resp.error) {
reject(resp.error);
} else {
resolve(resp.data);
}
});
I was under impression ret
would be data or error message?
The documentation on AWS is all done in callback style.
How to use this with promises?
Using Node AWS SDK which supports callbacks and promises.. https://aws.amazon./blogs/developer/support-for-promises-in-the-sdk/
Using q as promise library..
AWS.config.setPromisesDependency(q);
const headObjProm = this.s3Client.headObject(headParams).promise();
headObjProm
.then(ret => {
//ret is promise..
})
console logging ret
shows..
(resolve, reject) {
self.on('plete', function(resp) {
if (resp.error) {
reject(resp.error);
} else {
resolve(resp.data);
}
});
I was under impression ret
would be data or error message?
The documentation on AWS is all done in callback style.
How to use this with promises?
2 Answers
Reset to default 3When you're initializing the Q
package as the Promise to use, you need to specify the Promise
property from Q
.
AWS.config.setPromisesDependency(require('Q').Promise);
Since const headObjProm = this.s3Client.headObject(headParams).promise();
is asynchronous, how about say you have this in an async function and use await like so:
`const resolveHeadObject = async()=> await s3Client.headObject(headParams).promise()`
I use the await/async
syntax and it works for me.
Don't forget to add .Promise
to your Q
require as well, if that's necessary.