ES6箭头函数和诺言链浓缩语法解释

问题描述 投票:0回答:1

在下面的代码块中,谁能提供链接或解释一下浓缩的警报语句语法。

我理解前面扩展的等效代码,它被注释掉了,并包含消息参数。但是,我找不到省略消息参数的语法参考。

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

/*          timeoutPromise.then(message => {
                      alert(message);
                    }) 
*/        
       timeoutPromise.then(alert);
javascript syntax promise arrow-functions chaining
1个回答
5
投票

当你调用 .then()它希望你给它传递一个函数引用,当这个函数被调用时,它将传递一个参数,就是承诺的解析值。

一种方法是这样的。

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

这里你要传递给它的函数 .then() 是一个内联的、匿名的、箭头函数。

但是,你也可以创建一个常规的命名函数。

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

And, then pass it:

somePromise.then(showMyValue);

那是完全一样的签名 你传递的是一个函数引用,当该函数被调用时,该函数期望一个参数。

好吧,我知道了。alert() 也是一个函数,当调用时,期待一个参数,所以你也可以做。

somePromise.then(alert);

2
投票

什么是 message => { alert(message); }? 它是一个接受一个参数的函数,当调用时,会弹出一个警告对话框。

现在,什么是 alert? 它是一个接受一个参数的函数,当调用时,会弹出一个警报对话框。

A foo => bar(foo) 包装器几乎都是多余的,相当于只用了 bar.

© www.soinside.com 2019 - 2024. All rights reserved.