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));
你好,我如何让我的修改函数使用正常的函数和函数返回一个承诺。没有我所有的修改函数都会返回承诺,也没有我的修改函数来返回承诺。迭代正常功能和承诺
*“没有我的修改函数返回承诺。”*这是不可能的。只要一个函数返回一个promise,调用它的函数也必须返回一个promise(或接受一个回调函数)。 –
如何避免将所有纯函数写入承诺,我是否需要将所有的承诺都包含在承诺中,因为有一个异步函数。 – user2386092
不,*调用者*可以执行'Promise.resolve(f())'。如果'f'返回一个承诺,它将简单地返回该承诺。如果'f'返回任何其他值,则将返回解析为该值的承诺。 –