簡體   English   中英

JavaScript 中的 if 語句計時

[英]Timing an if-statement in JavaScript

我的想法是構建一個完全定時並自行運行的程序,無需用戶的任何輸入。 但是,我想以以下形式使用 if 語句:

if(height()>10){ do something }

height()本身是一個函數,也可以做一些事情。 call()只是另一個必須調用但也使用setTimeout計時的函數。 我希望在執行call()所有內容后call() return 。 然而

function () height() {call(); setTimeout(function() { return client._lastAltitude;},1000);}

不返回正確的值或不按我想象的方式工作。 是否可以對 return 語句計時以便 if 語句停止?

--現在試圖澄清它並給出我的主要代碼:我這樣做是因為我想給無人機一個飛行路徑。 我使用 setTimeout 調用發送移動訂單和某些時間點。 因此,我還想使用在特定時間調用的 if 語句。 然而,由於 Javascript 是異步的,通常的行為是立即運行 if 語句,因為它等待時間過去以調用其他函數。 但是這些函數可能會改變 if 語句的結果。 因此,我希望在調用並完成所有函數后返回height()返回值。 主要代碼現在看起來像這樣:

function altitude(){
    fullFlight.push("Height");
    runList.forEach(function (aufruf){
        aufruf(); });
        client.after(1, function () {
            emptyLists();
            });
function height() {
        altitude();
    client.after(2, function() { return client._lastAltitude});
}

但是 height() 的 return 語句沒有按預期工作。 after()就像 setTimeout 只是增加了偏移量。

您可以在沒有 setTimeout() 的情況下執行此操作

function call() {
  console.log('call called');
}

function height() {
  let start = new Date().getTime();
  call();
  while (new Date().getTime() < start + 1000) {}
  return client._lastAltitude;
}

if ( height() > 10 ) {
  console.log('done');
}

編輯:請注意,這將停止您的程序,直到高度執行完成。 如果這不是您想要的,您可以查看 gforce301 建議的承諾。

暫無
暫無

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

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