// SOLUTION 1
const async = require('async');
const iterator = (key, next) => {
if(key === 'filename') {
base64.encode(`https://example.com/${obj[key]}`, { string: true }, (errr, encr) => {
obj[key] = encr;
return next();
});
}
return next();
};
async.each(Object.keys(obj), iterator, err => callback(err, obj));
Вы можете использовать библиотеку async
следующим образом.iterator
перебирает ключи, и если ключ file
,
// SOLUTION 2
const getObj = (obj, callback) => {
const { filename } = obj;
if(!filename) return callback(null, obj);
base64.encode(`https://example.com/${obj['filename']}`, { string: true }, (errr, encr) => {
obj['filename'] = encr;
return callback(errr, obj);
});
};
getObj(obj, (err, newObj) => {
// use any callback function that uses variable newObj
// you can change obj by commenting out the line below
// obj = newObj
});
или поскольку obj
является объектом, вы можете напрямую искать ключ и использовать его в функции, которая выполняетобратный вызов.