有沒有什麼辦法讓函數以setTimeout運行並返回一個賦給變量的值?使用setTimeout時函數的返回值
我的意思的一個例子是這樣的:
function count(start, target) {
if (start < target) {
start += 0.1;
return start;
} else if (start > target) {
return target;
}
// i'm fully aware the return above will prevent this line occur
// this is my issue currently
setTimeout(function() {
count(start, target)
}, 1000);
}
var el = document.getElementById('test');
var value = count(0.0, 1.0); //get the opacity value
function check() {
el.style.opacity = value; //assign what the value is in this moment
if (value != 1.0) {
setTimeout(check, 0);
}
}
check();
我知道這個代碼將無法正常工作,我想它的方式,因爲return
出口的功能,我寫它來解釋什麼,我想做。
我想以這種方式做到這一點的原因是因爲我有一個元素,我想通過改變它的不透明度來淡入。
所以我有一個函數,它會使用我想要的任何緩動將開始值增加到目標值,然後返回將分配給元素的不透明屬性的所述值。
我不想將這個元素傳遞給這個count
函數,因爲這意味着它限制了它的使用,因爲當我想要爲元素之外的其他元素製作動畫時。
這個問題的解決方案是什麼?
https://jsfiddle.net/arunpjohny/e8qbohb9/2/ –
@ArunPJohny所以我只需要在下一次函數調用之後放置返回值? – Sir
是的......我想在前面的條目中有一個錯誤https://jsfiddle.net/arunpjohny/e8qbohb9/3/ –