AWS s3.listBuckets сохраняет объект данных в глобальной переменной - nodejs - PullRequest
0 голосов
/ 10 июня 2018

Я пытаюсь прочитать сегменты в учетной записи и сохранить список в переменной, к которой могут обращаться другие функции.

Я пытаюсь использовать глобальную переменную.

Результат:Значение глобальной переменной не сохраняется / сохраняется.

Узел: v10 Код:

var AWS = require('aws-sdk');
AWS.config.update({region: 'eu-west-1'});

s3 = new AWS.S3({apiVersion: '2006-03-01'});
let blist;
getBuckets();
console.log("list: " + blist);

async function getBuckets() {
     let response = await s3.listBuckets().promise();
      // do your processing
      var buckets = response.Buckets.map(x=>x.Name);
      console.log("buckets: " + buckets);
      blist = buckets;
      //return bnames;
}

Вывод:

Output:

(GV) List: undefined  (blist) 
(LV) Buckets: [all good]

Значение глобальной переменной не определено.

Может кто-нибудь помочь мне?Все, что мне нужно, - это получить доступ к списку имен блоков из другой функции.

1 Ответ

0 голосов
/ 10 июня 2018

s3.listBuckets - это асинхронная функция, поэтому при назначении переменной вы не получите ожидаемого результата.Вам лучше рассмотреть возможность использования обещаний для их цепочки или использовать async / await .

Использование обещаний:

s3.listBuckets().promise()
       .then((response) => {
          // do your processing
        });

Использование async /ждут:

async function someFn() {
     let response = await s3.listBuckets().promise();
      // do your processing
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...