2017-06-30 64 views
0

我有一個奇怪的行爲與console.time函數。不同的時間在console.time如果一個函數有setTimeout

我有這個測試功能:

function test(){ 
    setTimeout(function(){ 
    $('.test').on('click', function(){ 
     console.log('clicktest'); 
    }); 
    }, 3); 
} 

附加:

console.time('test'); 
test(); 
console.timeEnd('test'); 

現在我的時間與setTimeout和無:

用的setTimeout:

test: 0.03515625ms 

無SE tTimeout:

test: 1.44287109375ms 

我不確定這種行爲是否正確。

我想我需要更多的時間用setTimeout來執行我的測試函數。

有人可以解釋我這種行爲嗎?

+2

'setTimeout'不會阻止執行。它異步地運行它的回調。 – Ryan

+0

Aaaahh。好的。這就說得通了。 – cgee

回答

0

setTimeout是異步的,本身比jQuery的方法需要更少的計算時間來執行。在使用setTimeout的情況下,將在計時器停止後評估jQuery的方法。

+0

好的。所以如果我想用setTimeout跟蹤一個函數的時間,我不能使用console.time是否有另一種方法來追蹤功能的時間? – cgee

+0

@cgee如果你想要這樣做,你需要在'setTimeout'的回調函數中結束定時器,就在jQuery代碼之後。 – skreborn

相關問題