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'返回任何其他值,則將返回解析爲該值的承諾。 –