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的语法糖,其实按照第二种写法也是可以的,可能第一种写法会比较吊一点,毕竟很少人会知道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
本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!