Что передается функции в блоке Promise .catch? - PullRequest
0 голосов
/ 30 сентября 2019

Какова общая разница между этими двумя стилями обработки .catch блоков в Обещаниях:

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

Что .catch Обещания передается методу получения?

например. Могут ли быть дополнительные аргументы?

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

В обоих случаях есть только один аргумент.

Между этими двумя стилями нет принципиальной разницы, за исключением того, что функция со стрелкой ведет себя не так, как реальная function, особенно this будет undefined или window (в зависимости от того, включен строгий режим или нет) с function, а с функцией стрелки это тот же this, что и контекст, в котором он объявлен.


Из этой документации по синтаксису улова MDN :

Этот .catch имеет один аргумент: reason: Причина отклонения.

Из этой документации функции стрелки MDN :

Выражение функции стрелки является синтаксически компактной альтернативой регулярному выражению функции, хотя без еесобственные привязки к ключевым словам this, arguments, super или new.target . Выражения функций стрелок плохо подходят в качестве методов, и их нельзя использовать в качестве конструкторов.

0 голосов
/ 30 сентября 2019

В «catch (e => myMethod (e))» вы передаете анонимную функцию, которая принимает параметр «e» и вызывает myMethod (e).

В «catch (myMethod)»вы прямо передаете свой «myMethod» вместо той анонимной функции (в приведенном выше случае), которая принимает параметр «e».

Итак, оба одинаковы. И переданный параметр (e) является «причиной» отклонения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...