我有一個很大的 setTimeout 函式,它生成每秒變化的動態變數。對于我擁有的其他函式,我想在呼叫 setTimeout 函式時獲得一個變數,因為我想將它用于未包含在其中的另一個函式。所以本質上,我想要我呼叫的第一個值,我不想打擾該函式的運行。
我該怎么做呢?
基本上:
function schedule() {
<<changingvalue is here>>
setTimeout(function () { schedule() }, 1000);
}
console.log(<<changingvalue at a particular instance>>);
uj5u.com熱心網友回復:
您可以使用承諾在第一次setTimeout完成后回傳值
let a = 1234;
function schedule() {
a;
return new Promise(r => setTimeout(function () { schedule(); r(a); }, 1000));
}
(async () => {
console.log(await schedule());
})();
或者簡單地回傳值
let a = 1234;
function schedule() {
a;
setTimeout(function () { schedule(); }, 1000);
return a;
}
console.log(schedule());
uj5u.com熱心網友回復:
你可以使用一個class. 在建構式中初始化計數,然后呼叫loop更新計數的方法,然后每秒再次呼叫一次。
然后,您可以從該類創建一個新實體,然后getCount在需要時從其他函式呼叫。
在這個例子中,我有一個間隔getCount每三秒呼叫一次,所以你會看到輸出:3、6、9等。
class Timeout {
constructor() {
this.count = 0;
this.loop();
}
getCount() {
return this.count;
}
loop() {
this.count = this.count 1;
setTimeout(this.loop.bind(this), 1000);
}
}
const timeout = new Timeout();
setInterval(() => {
console.log(timeout.getCount());
}, 3000);
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/357450.html
標籤:javascript 设置超时
