Вызов метода класса, вложенного в метод S3 Bucket - PullRequest
0 голосов
/ 30 ноября 2018

Я работаю над угловым компонентом.В методе из файла машинописи я обращаюсь к объекту AWS S3 с помощью метода headObject ().В функции обратного вызова этого метода я хотел бы иметь возможность снова вызывать внешний метод, если метод 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 голосов
/ 30 ноября 2018

Разобрался.Я использовал оператор «жирная стрелка», чтобы переформатировать функцию обратного вызова в лямбда-функцию, как показано здесь: https://stackoverflow.com/a/48808669/5943974

...