我在幫助我的js文件的功能來上傳上S3文件:在JavaScript實現回調
module.exports.uploadToAWS = function uploadToAWS(folderName, fileName, fileData) {
var s3 = new AWS.S3({ params: {Bucket: ‘myBucket’} });
var keyName = folderName + "/" + fileName;
var buffer = new Buffer(fileData.replace(/^data:image\/\w+;base64,/, ""),'base64')
var data = {
Key: keyName,
Body: buffer,
ContentEncoding: 'base64',
ContentType: 'image/jpeg'
};
s3.putObject(data, function(err, data) {
if (err) {
console.log(err);
console.log('Error uploading data: ', data);
} else {
console.log('succesfully uploaded the image!');
}
});
}
我的消費函數是這樣的:
if(images) {
images.forEach(function(imageRecord) {
awsHelper.uploadToAWS('assets', assetObject.id, imageRecord);
});
}
我要爲大家介紹的回調方法在這裏,這樣我可以從我的幫助函數到我的調用者函數獲得成功和失敗。它如何實施? 需要我的消費者功能如下,但輔助功能會是什麼樣的?
if(images) {
images.forEach(function(imageRecord) {
awsHelper.uploadToAWS(
'assets',
assetObject.id,
imageRecord,
function (success, failure) {
//handle success or failure
});
});
}
我會建議針對那種風格的消費者,而是建議返回一個Promise,所以你可以'doSomthingAsync()。then(function(){})。catch(function( ){})'而不是。如果你感興趣,我可以寫一個更復雜的答案。 – spender
你提到'承諾',但你在談論回調。您是否願意以某種方式回覆承諾,或者只有回撥解決方案纔可以? –
目前,我只需要一個解決方案,新的JavaScript,只是聽說過諾言,肯定會在將來使用它 – Firdous