将从promise返回的数据分配给一个variables对象
我有以下代码从AWS S3中检索对象。
我将如何将从承诺返回的数据分配给files
对象?
我想能够将files
variables传递给另一个方法,然后我想访问数据。
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); });
如果files
在getFiles
调用之间发生变异,可以将它作为Promise.all()
的第一个参数Promise.all()
,然后作为res[0]
访问,