我知道這個問題已被多次詢問(是的,我做了一些研究),但我看不到找到適合我需求的解決方案。將指針/參考傳遞給變量作爲參數
我迄今所做的:
我是構建跟蹤的用戶有多遠向下滾動頁面的百分比,並很好地顯示到一些進度此功能。這很有效,但是當我在Chrome上打開開發者控制檯並查看時間軸選項卡時(這顯示了正在運行的圖形),我意識到我的代碼非常「活躍」。它運行用戶向下滾動頁面的每個像素,這是非常誠實的。
所以我想,我怎麼能改善這個問題,並且我已經想出了一個解決方案,只需要在任何毫秒內執行一次函數。如果該函數已經在{whatever}毫秒中執行過,那麼這涉及一個設置爲true或false的變量。
我想要完成的任務:
我希望能夠設置爲,將作爲一個標誌,以確定是否該功能已經被執行或沒有外部變量的引用。
function qeue(fn, interval, status){ // this function name might not be very fitting..
// fn = function to be executed
// interval = function can only run once between the intervals
// status = tricky part..
// This should contain a reference to an external variable that is either true or false
}
這是如何實現的?
側面說明
如果這種解釋是沒有幫助的,你仍然沒有得到我想要的:
如何傳遞給一個變量的引用到一個函數,所以函數可以基於該變量的值來操作?
爲什麼正常參數是不是一個選項 我要實現某種類型的函數內部遞歸setTimeout的功能,來檢查,如果另一個功能已被執行或者不執行,如果我通過這一個參數,這參數在過程中不能改變。
希望你們能幫助我!
謝謝
謝謝你的所有偉大的答案。你讓我學習了很多。我正在採取去抖策略!我標記T.J. Crowder是最好的答案,因爲這是一個很好的解釋,也是第一個答案。但是再次感謝你們!
http://stackoverflow.com/a/4298672 – Teemu
你可以瀑布的承諾,所以你可以在每個進一步的settimeout調用中使用最後的結果。檢查這篇文章https://remysharp.com/2015/12/18/promise-waterfall/#comment-3076688933 – Sebas