如何在AWS headObject中使用promises?

时间:2017-03-06 20:18:43

标签: node.js amazon-s3 aws-sdk

使用支持回调和承诺的Node AWS SDK。 https://aws.amazon.com/blogs/developer/support-for-promises-in-the-sdk/

使用q作为承诺库.. AWS.config.setPromisesDependency(q);

const headObjProm = this.s3Client.headObject(headParams).promise();

 headObjProm
   .then(ret => {
     //ret is promise..
   })

控制台记录ret显示..

(resolve, reject) {
   self.on('complete', function(resp) {
     if (resp.error) {
       reject(resp.error);
     } else {
       resolve(resp.data);
     }
  });

我在印象中ret会出现数据或错误消息吗? AWS上的文档都以回调方式完成。 如何在承诺中使用它?

2 个答案:

答案 0 :(得分:3)

当您将Q包初始化为要使用的承诺时,您需要从Promise指定Q属性。

AWS.config.setPromisesDependency(require('Q').Promise);

答案 1 :(得分:1)

由于const headObjProm = this.s3Client.headObject(headParams).promise();是异步的,那么如何在异步函数中使用它并像这样使用await呢:

`const resolveHeadObject = async()=> await s3Client.headObject(headParams).promise()`

我使用await/async语法,它对我有用。

如果必要的话,请不要忘记将.Promise添加到您的Q要求中。