Object.prototype.modify = function(modifications,prop){
modifications.forEach(modifier => {
this[prop] = modifier(this[prop])
})
}
function removeLastName(str){
return str.split(' ')[0]
}
function upperCase(str){
return str.toUpperCase()
}
function translate(str){
return new Promise((resolve,reject) => {
setTimeout(_ => resolve(str+"translated"),1000)
})
}
function prepareUser(user){
user.modify([removeLastName,upperCase],'name')
// user.modify([removeLastName,upperCase,trans],'name')
return user
}
var user = {
name: "simon madsen"
}
console.log(prepareUser(user));
Здравствуйте, как я могу заставить свою функцию изменения использовать обычные функции и функции, которые возвращают обещание. Не имея всех моих функций, возвращающих обещания, и без моей функции изменения, чтобы вернуть обещание.Итерация над нормальными функциями и обещаниями
* «без моей функции изменения, чтобы вернуть обещание». * Это невозможно. Как только одна функция возвращает обещание, функция, которая ее вызывает, должна также вернуть обещание (или принять обратный вызов). –
Как вы избегаете писать все свои чистые функции для обещаний, мне нужно все обернуть обещаниями из-за одной асинхронной функции. – user2386092
Нет, * caller * может выполнять 'Promise.resolve (f())'. Если 'f' вернет обещание, оно просто вернет это обещание. Если 'f' возвращает любое другое значение, будет возвращено обещание, которое разрешает это значение. –