将从promise返回的数据分配给一个variables对象

我有以下代码从AWS S3中检索对象。

我将如何将从承诺返回的数据分配给files对象?

我想能够将filesvariables传递给另一个方法,然后我想访问数据。

 var getFiles = function getFiles(files) { return Promise.all(files.map(function (file) { return new Promise((resolve, reject) => { var params = { Bucket: 'my-bucket', Key: file.key }; s3.getObject(params, function (err, data) { if (err) reject(err); else { resolve(data); } }); }); })); }; var fileNames = ['test.jpg', 'background.jpg']; var files = fileNames.map(function(fileName) { return { key: fileName } }); getFiles(files) .then(function(res) { console.log(res) }) .catch(function(res) { console.log(res); }); 

Promise.all(...).then应该返回一个已parsing的promise返回值的迭代器,所以res处理程序应该是来自s3.getObject的返回值数组。

files是全球性的,所以你应该能够直接从callback中引用它:

 getFiles(files) .then(function(res) { console.log(res); console.log(files); // [{key: 'test.jpg'}, {key: 'background.jpg'] }) .catch(function(res) { console.log(res); }); 

如果filesgetFiles调用之间发生变异,可以将它作为Promise.all()的第一个参数Promise.all() ,然后作为res[0]访问,