У меня есть функция в моем помощнике расслоения плотного файл для загрузки файлов на 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