setTimeout、setInterval被遺忘的第三個參數

1、最近在看promise,驚奇的發現:原來 setTimeout不僅有兩個參數,我還能說什麼呢?趕忙探探究竟。javascript

function multiply(input) {
    return new Promise(function (resolve, reject) {
        log('calculating ' + input + ' x ' + input + '...');
        setTimeout(resolve, 500, input * input);
    });
} 

 

2、定義java

扒了一下MDN,果真有定義:promise

  ’Additional parameters which are passed through to the function specified by func once the timer expires.’函數

  定時器啓動時候,第三個之後的參數是做爲第一個func()的參數傳進去。字體

3、demo1spa

增長兩個參數3d

function sum(x, y) {
    console.log(x+y) //3
}
setTimeout(sum, 1000, 1, 3);

增長三個參數 code

(打印出的11是setTimeout的timeId)blog

能夠看出:ip

[第三個參數及之後的參數均可以做爲sum函數的參數;]

 

4、再看demo2

var doc=document.getElementById('div');
setTimeout(function(){
	doc.style.color='red';
},10000,setTimeout(function(){
	doc.style.color='black';
},5000));

上面的結果是,div元素內的字體樣式5秒後變黑,10秒後再變紅。是否是很驚奇,由於第三個參數也是一個定時器,5後就會開啓。和JQuery裏面的animate()不一樣,animate裏面回調是執行了前面以後再執行後面的。

相關文章
相關標籤/搜索