今天在重新学习ES6中的promise时,发现下面这段代码:
function timeout(ms){
return new Promise((resolve,reject) =>{
setTimeout(resolve,ms,'done');
})
}
timeout(100).then((value) =>{
console.log(value);
})
里面的setTimeout竟然有三个参数?。?br>
然后我就在mdn上查了一下setTimeout方法,发现:它不止有第三个参数,它可以有无数个参数?。?!而且,setTimeout方法不是js的内置方法,它是Window对象的!
1,window对象
我先说一下这个window对象:
window对象表示一个包含DOM文档的窗口,其document属性指向窗口中载入的DOM文档。
window作为全局变量,代表了脚本正在运行的窗口,暴露给Javascript代码。
注意:
在标签浏览器中,每个标签具有自己的window对象。也就是说,同一个窗口的标签之间不会共享一个window对象。有一些方法,如window。resizeTo和window.resizeBy之类的方法会作用于整个窗口而不是window对象所属的那个标签。
2,setTimeout
mdn中是这么说明他的参数的
var timeoutID = scope.setTimeout(function[,delay,param1,param2,...]);
var timeoutID = scope.setTimeout(function[,delay]);
var timeoutID = scope.setTimeout(code[,delay]);
function
function 是你想要在到期时间(delay毫秒)之后执行的函数。
code
这是一个可选语法,可以使用字符串而不是function,在delay毫秒之后编译和执行字符串(但是不推荐,因为有安全风险)
delay(可?。?br>
延迟的毫秒数 (一秒等于1000毫秒),函数的调用会在该延迟之后发生。如果省略该参数,delay取默认值0,意味着“马上”执行,或者尽快执行。不管是哪种情况,实际的延迟时间可能会比期待的(delay毫秒数) 值长,
param1,...,paramN(可?。?br>
附加参数,一旦定时器到期,它们会作为参数传递给 function 或执行字符串