簡體   English   中英

如何編寫一個需要X秒鍾的函數?

[英]How can I write a function that takes X amount of seconds?

我想編寫一個運行非常接近5秒的javascript函數。 我該如何保證?

我努力了

  function wait(numSeconds) {
    var end = new Date().getMilliseconds() + numSeconds * 1000;
    while (new Date().getMilliseconds() <= end) {}
  }

但這只會使頁面崩潰。

您不能凍結頁面而不凍結頁面。

您正在嘗試編寫一個連續運行5秒的函數。
Javascript在UI線程上運行,因此只要運行任何代碼,頁面就會被凍結。

簡而言之,您無法做到這一點。
您可能需要使用setTimeout()來編寫異步代碼

您可以使用:

var t = setTimeout(function(){alert('done')},5000);

如果要等待5秒鍾再做某事,請使用setTimeout或setInterval 否則,僅僅消耗用戶時間是一個壞主意。 實際上,如果執行某件事花費的時間太長,瀏覽器就會中斷您的腳本,而您的功能肯定會這樣做。

(暫時忽略您為什么不應該真正執行此操作...)

您的代碼凍結瀏覽器的原因是您的while條件將永遠不會變為真( numSeconds為1或更大)。

.getMilliseconds()方法 返回日期的毫秒部分,即0到999之間的一個數字。對於numSeconds (大於1),您的end將始終大於999。

嘗試使用.getTime()而不是.getMilliseconds() 或者,如果您不關心支持舊的瀏覽器,請使用Date.now()

您可以只使用javascripts setTimeout代替自己的等待函數。

setTimeout在一定時間后執行功能。

例如:

setTimeout(function(){}, 5000);

只需等待5秒鍾。

w3schools中查看更多內容。

嚴格來說,您的要求無法完成,因為如您所見,頁面將在您等待時凍結。

但實際上,我懷疑您真正想要的是這樣的東西:

function waitawhile() {
    setTimeout( function() {
        alert('5 seconds has passed');
    }, 5000);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM