【问题标题】:Calling class method nested in S3 bucket method调用嵌套在 S3 存储桶方法中的类方法
【发布时间】:2018-12-01 01:32:31
【问题描述】:

我正在开发一个 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;
        }
      });
    }
  });
}

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

【问题讨论】:

    标签: angular typescript amazon-s3 this


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 1970-01-01
      • 2022-01-24
      • 2020-11-27
      • 1970-01-01
      • 2015-09-15
      • 1970-01-01
      • 2023-03-31
      • 2017-01-02
      相关资源
      最近更新 更多