嵌套在S3存储桶方法中的调用类方法

时间:2018-11-30 16:25:14

标签: angular typescript amazon-s3 this

我正在研究Angular组件。在打字稿文件中的一种方法中,我正在使用headObject()方法访问一个AWS S3对象。在该方法的回调函数中,如果headObject()方法失败,我希望能够再次调用外部方法。似乎我应该使用“胖箭头”运算符来构造方法,以引用外部方法的this变量,但是我无法找出正确的方法。如果有更好的方法,请指出我的方向。

getNewPass = (parameter) => {
  const bucket = new S3({
    accessKeyId: '/*************/',
    secretAccessKey: '/*************/',
    region: '/*************/'
  });

  const params = {
    Bucket: '/*************/',
    Key: /*************/
  }

  bucket.headObject(params, function (err, data) {
    if (err && err.code === 'NotFound') {
      // HERE is where the issue is
      this.getNewPass(parameter);
    } else {
      bucket.getSignedUrl('getObject', params, function(err, data) {
        if (err) {
          console.log('Error retrieving file: ', err);
          return false;
        } else {
          console.log('Successfully retrieved file.', data);
          window.location.href = data;
          return true;
        }
      });
    }
  });
}

我已经屏蔽了一些敏感信息,并更改了变量名,但否则,这就是我正在处理的内容。感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

弄清楚了。我使用“胖箭头”运算符将回调函数重新格式化为lambda函数,如以下示例所示:https://stackoverflow.com/a/48808669/5943974