最近在看阮一峰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
这段JavaScript代码当你在页面打开2s时间内点击一次按钮,效果是这样的:页面卡住大约5s钟大约5s后弹出 ,click handler点击弹窗确认后,弹出 timer handler
今天要说的很简单,没有 setTimeout 的基本用法,也没有什么特殊用法。就是想记录一下 setTimeout 的一个特殊情况,分享给可能也不知道的你们。其中第二个参数是需要延时执行的毫秒数,大家应该都知道这个时间是不准确的,可以理解为最短延时。
计时器setTimeout是我们经常会用到的,它用于在指定的毫秒数后调用函数或计算表达式。语法:setTimeout(code, millisec, args);注意:如果code为字符串,相当于执行eval()方法来执行code。
在js中setTimeout和setInterval都是用来定时的一个功能,下面这篇文章主要给介绍了JS中setInterval和setTImeout的this指向问题,文中通过示例介绍的很详细,有需要的朋友可以参考借鉴,一起来看看吧。
说起来你可能不相信,setTimeout居然有第三个参数,我以前也没用过这个,是前几天看别人博客发现的,咋一看还以为写错了吧,下面一起看看这个setTimeout第三个参数。
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!