ES6 Arrow Functions и Promise Chaining краткое объяснение синтаксиса - PullRequest
0 голосов
/ 08 мая 2020

Может ли кто-нибудь в следующем блоке кода предоставить ссылки или объяснение синтаксиса сжатого оператора предупреждения.

Я понимаю предыдущий расширенный эквивалентный код, который закомментирован и содержит параметр сообщения. Однако я не могу найти ссылку на синтаксис для исключения параметра сообщения:

      let timeoutPromise = new Promise((resolve, reject) => {
        setTimeout(() => {
          resolve('Success!');
        }, 2000);
      });

/*          timeoutPromise.then(message => {
                      alert(message);
                    }) 
*/        
       timeoutPromise.then(alert);

Ответы [ 2 ]

5 голосов
/ 08 мая 2020

Когда вы вызываете .then(), он ожидает, что вы передадите ему ссылку на функцию, и когда эта функция будет вызвана, ей будет передан один аргумент, который является разрешенным значением обещания.

Один из способов Сделайте это так:

 somePromise.then(result => {
     console.log(result);
 });

Здесь функция, которую вы передаете .then(), является встроенной анонимной стрелочной функцией.

Но вы также можете создать обычную именованную функцию :

function showMyValue(result) {
    console.log(result);
}

И затем передайте его:

somePromise.then(showMyValue);

Это точно такая же подпись. Вы передаете ссылку на функцию, и, когда эта функция вызывается, эта функция ожидает один аргумент.

Ну, alert() также является функцией, которая при вызове ожидает один аргумент, поэтому вы также можете:

somePromise.then(alert);
2 голосов
/ 08 мая 2020

Что такое message => { alert(message); }? Это функция, которая принимает один аргумент и при вызове вызывает диалоговое окно с предупреждением.

Что такое alert? Это функция, которая принимает один аргумент и при вызове выдает всплывающее диалоговое окно с предупреждением.

Обертка foo => bar(foo) почти всегда лишняя и эквивалентна просто bar.

...