在 Promise .catch 块中传递给函数的是什么?

What is passed to the function in a Promise .catch block?

这两种处理 Promises 中 .catch 块的方式之间的一般区别是什么:

...
.catch(e => myMethod(e))
...
.catch(myMethod)

Promise 的 .catch 传递给接收方法的是什么?

例如可以有额外的参数吗?

catch(e => myMethod(e)) 中,您正在传递一个匿名函数,该函数采用参数 e 并调用 myMethod(e)

catch(myMethod) 中,您直接传递 myMethod 而不是那个采用参数 e.

的匿名函数(在上述情况下)

所以,两者是一样的。并且传递的参数e是被拒绝的"reason"。

在这两种情况下,只有一个参数。

这两种样式之间没有根本区别,只是箭头函数的行为不同于真正的 function,尤其是 this 将是 undefinedwindow(取决于是否启用了严格模式)带有 function,并且带有箭头函数,它与声明它的上下文相同 this


从这个MDN Catch Syntax documentation:

This .catch has one argument: reason: The rejection reason.

由此MDN Arrow Function documentation:

An arrow function expression is a syntactically compact alternative to a regular function expression, although without its own bindings to the this, arguments, super, or new.target keywords. Arrow function expressions are ill suited as methods, and they cannot be used as constructors.