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

更新日期: 2019-04-18阅读: 2.3k标签: setTimeout

一、起因

最近在看阮一峰es6,惊为天人的发现promise里面的一个例子:原来 setTimeout居然还有第三个参数,调用方法的时候可以作为传参对象。

function timeout(ms) {
  return new Promise((resolve, reject) => {
    setTimeout(resolve, ms, 'done');
  });
}

timeout(100).then((value) => {
  console.log(value);
});


二、定义

图片描述

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


三、语法

我认为第三个及以后的参数可能是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


链接: https://www.fly63.com/article/detial/2920

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!