Skip to content

Latest commit

 

History

History

2715.Execute Cancellable Function With Delay

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

English Version

题目描述

现给定一个函数 fn ,一个参数数组 args 和一个以毫秒为单位的超时时间 t ,返回一个取消函数 cancelFn

在经过 t 毫秒的延迟后,除非 先调用 cancelFn ,否则 fn 应该以 args 作为参数被调用。并且在这种情况下,fn 不应该被调用。

 

示例 1:

输入:fn = (x) => x * 5, args = [2], t = 20, cancelTime = 50
输出:[{"time": 20, "returned": 10}]
解释:
const cancel = cancellable(fn, [2], 20); // // 在 t=20ms 时调用 fn(2)
setTimeout(cancel, 50);

cancelTime(50ms)在延迟时间(20ms)之后,所以 fn(2) 应该在 t=20ms 时调用。fn 的返回值是 10。

示例 2:

输入:fn = (x) => x**2, args = [2], t = 100, cancelTime = 50
输出:[]
解释:fn(2) 从未被调用,因为 cancelTime(50ms)在延迟时间(100ms)之前。

示例 3:

输入:fn = (x1, x2) => x1 * x2, args = [2,4], t = 30, cancelTime = 100
输出:[{"time": 30, "returned": 8}]
解释:fn(2) 从未被调用,因为 cancelTime(50ms)在延迟时间(100ms)之前。

 

提示:

  • fn 是一个函数
  • args 是一个有效的 JSON 数组
  • 1 <= args.length <= 10
  • 20 <= t <= 1000
  • 10 <= cancelT <= 1000

解法

TypeScript