Javascript 如何更改作为引用传递的函数的参数?

Javascript 如何更改作为引用传递的函数的参数?,javascript,promise,Javascript,Promise,我这里有一个承诺链,我正在传递一个对函数的引用,并将参数传递给它。 当我们到达第六个。然后()我们抛出一个错误。我希望Error的格式为Error.message,因此我得到的是文本OH NOES,而不是实际的错误。 当然,我可以在alwaysThrows函数中这样做,我还可以将函数传递给该方法,例如Catch(函数(错误){return error.message})。但是我想知道是否有一种方法可以在不向console.log传递函数的情况下操纵传递给它的参数,但将其保留为对console.l

我这里有一个承诺链,我正在传递一个对函数的引用,并将参数传递给它。
当我们到达第六个
。然后()
我们抛出一个错误。我希望
Error
的格式为
Error.message
,因此我得到的是文本
OH NOES
,而不是实际的错误。
当然,我可以在alwaysThrows函数中这样做,我还可以将函数传递给该方法,例如
Catch(函数(错误){return error.message})
。但是我想知道是否有一种方法可以在不向console.log传递函数的情况下操纵传递给它的参数,但将其保留为对
console.log
的引用

function alwaysThrows() {
    throw new Error('OH NOES');
}
function iterate(num){ 
    console.log(num)
    return num + 1;
}
promise = Promise.resolve(1)
.then(iterate) // 1
.then(iterate) // 2
.then(iterate) // 3
.then(iterate) // 4
.then(iterate) // 5
.then(alwaysThrows)
.then(iterate)
.then(iterate)
.then(iterate)
.then(iterate)
.then(iterate)
.catch(console.log)

只需创建一个泛型函数来处理错误

在这里,我创建了一个名为
niceLog
的简单函数,并将其放入catch回调中

e.message | | e.toString()
只是让它说
OH NOES
,否则它会说
Error:OH NOES
,如果没有消息属性,它会返回到toString

函数niceLog(e){
console.log(例如message | | e.toString());
}
函数alwaysThrows(){
抛出新错误(“哦,不”);
}
函数迭代(num){
console.log(num)
返回num+1;
}
承诺=承诺。解决(1)
.然后(迭代)//1
.然后(迭代)//2
.然后(迭代)//3
.然后(迭代)//4
.然后(迭代)//5
.然后(一直向前)
.然后(迭代)
.然后(迭代)
.然后(迭代)
.然后(迭代)
.然后(迭代)

.catch(niceLog)
您想更改传递给
控制台的值。log
,但不更改传递给
控制台的输入值。log
中所述。catch(error=>Promise.reject(error.message))
?不,那是不可能的。作为一个限制,似乎也很随意。
.catch(error=>console.log(error.toString())
@Ryan是的,我想可能有一些解决方案可以使用.call或.bind和/或一些奇怪的参数解构。好奇。谢谢,那也行!我更多的是寻找一种方法,不向它传递实际的函数,而是操纵参数,但我现在明白javascript没有办法做到这一点。知道javascript不能做什么也很高兴:-)。