[英]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.