在廖雪峰大神的官方網站看nodejs的時候,發現自己對Promise函數不甚瞭解,於是轉去看Promise函數,看到了這段代碼: setTimeout居然有第三個參數!!! 還有這種操作?我怎麼不知道?我怕不是個假的前端。 馬上查了MDN,發現確實有第三個參數,而且不僅三個,第三個之後的參數都將作為 ...
在廖雪峰大神的官方網站看nodejs的時候,發現自己對Promise函數不甚瞭解,於是轉去看Promise函數,看到了這段代碼:
function multiply(input) { return new Promise(function (resolve, reject) { log('calculating ' + input + ' x ' + input + '...'); setTimeout(resolve, 500, input * input); }); }
setTimeout居然有第三個參數!!!
還有這種操作?我怎麼不知道?我怕不是個假的前端。
馬上查了MDN,發現確實有第三個參數,而且不僅三個,第三個之後的參數都將作為settimeout函數的參數使用。
簡單測試了一下:
setTimeout(function(){ console.log(arguments) },2000,"haha");
確實輸出了"haha":
同上試了一下setInterval,也可以通過第三個參數傳參。
不過這種用法有其局限性,我指的當然是該死的IE,以下是MDN的備註:
沒想到溫故真的能知新,我之前都是在匿名函數內再寫個函數來傳參的,真蠢。
另外,MDN上有針對IE的相容代碼,這裡不再抄錄。
https://developer.mozilla.org/zh-CN/docs/Web/API/Window/setTimeout