【问题标题】:ES6 Arrow Functions and Promise Chaining condensed syntax explanationES6 箭头函数和 Promise Chaining 精简语法解释
【发布时间】:2020-08-24 04:32:21
【问题描述】:

在下面的代码块中,有人可以提供链接或对精简警报语句语法的解释。

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

      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】:

    当您调用.then() 时,它希望您向它传递一个函数引用,并且当调用该函数时,它会传递一个参数,即promise 的解析值。

    一种方法是这样的:

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

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

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

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

    然后,通过它:

    somePromise.then(showMyValue);
    

    这是完全相同的签名。您正在传递一个函数引用,并且在调用该函数时,该函数需要一个参数。

    嗯,alert() 也是一个函数,当被调用时,它需要一个参数,所以你也可以这样做:

    somePromise.then(alert);
    

    【讨论】:

    • “当该函数被调用时,它会被传递一个参数,即 promise 的解析值。”,事实上。有这方面的文件吗?当我第一次看到没有明确传递已解析参数的警报时,我有类似的问题
    • @user1169587 - 这是promise specification in ECMAScript。您将一个函数引用传递给.then(fn),它会在稍后的某个时间(如果/当 promise 解析时)调用该函数,其中一个参数是 promise 的解析值。
    【解决方案2】:

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

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

    foo => bar(foo) 包装器几乎总是多余的,仅相当于 bar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 2018-01-08
      • 1970-01-01
      • 2019-02-19
      • 2019-01-06
      • 1970-01-01
      相关资源
      最近更新 更多