Jeff的隨手筆記

學習當一個前端工程師

0%

用LeetCode寫日記-Day15

生病了早上完全起不來,下午身題狀況比較好趕快來把每日進度給完成!

Day15: Interval Cancellation

問題描述:

Given a function fn, an array of arguments args, and an interval time t, return a cancel function cancelFn.

The function fn should be called with args immediately and then called again every t milliseconds until cancelFn is called at cancelT ms.

問題難度:Easy

問題限制:

  • fn is a function
  • args is a valid JSON array
  • 1 <= args.length <= 10
  • 30 <= t <= 100
  • 10 <= cancelT <= 500

我的解題過程:

這是每隔一段時間就要執行一次fn ,直到cancelFn執行才停止。

每隔一段時間要執行要使用**setInterval**

1
const timeoutID = setInterval(() => {fn(...args)}, t)

然後創建cancelFn

1
const cancelFn = () => {clearInterval(timeoutID)}

之後 return cancelFn,應該就可以得到答案了吧….

果然是錯的,目前看起來是0秒沒執行

所以只要我們自己手動輸入一次應該就可以了:

1
2
3
4
fn(...args)
const timeoutID = setInterval(() => {fn(...args)}, t)
const cancelFn = () => {clearInterval(timeoutID)}
return cancelFn

沒錯確實是這樣!

完整code

1
2
3
4
5
6
var cancellable = function(fn, args, t) {
fn(...args)
const timeoutID = setInterval(() => {fn(...args)}, t)
const cancelFn = () => {clearInterval(timeoutID)}
return cancelFn
};

其他code

無,大同小異

總結

這其實算是有點作弊,昨天練習了setTimeout時查看資料時剛好有看到setInterval,因此非常容易做出來,唯一疑惑了一下是在加fn(...args)這段時,想說不會這麼簡單吧,結果還真的就是這麼直覺XD