setTimeout和setInterval被忘记的第3个参数

一、原由

近来在看阮一峰es6,惊为天人的发明promise内里的一个例子:本来 setTimeout竟然另有第三个参数,挪用要领的时刻能够作为传参对象。

    function timeout(ms) {
      return new Promise((resolve, reject) => {
        setTimeout(resolve, ms, 'done');
      });
    }
    
    timeout(100).then((value) => {
      console.log(value);
    });

二、定义

《setTimeout和setInterval被忘记的第3个参数》

定时器启动时,第三个及今后的参数是作为第一个参数(也就是函数)的参数传进去的。

三、语法糖

我以为第三个及今后的参数多是setTimeout的语法糖,实在根据第二种写法也是能够的,能够第一种写法会比较吊一点,毕竟很少人会晓得setTimeout有第三个参数。

    setTimeout(resolve, ms, 'done');
    setTimeout(resolve('done'), ms);

但是在Promise内里resolve只能传一个参数,在其他要领能够传多个参数

    setTimeout(test,1000,1,2,3);

    function test(a ,b, c) {
        console.log(a, b, c) // 输出1,2,3
    }
    原文作者:早饭君
    原文地址: https://segmentfault.com/a/1190000018891341
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞