1
0
mirror of https://gitee.com/coder-xiaomo/leetcode-problemset synced 2025-01-10 18:48:13 +08:00
Code Issues Projects Releases Wiki Activity GitHub Gitee
leetcode-problemset/leetcode-cn/problem (Chinese)/执行可取消的延迟函数 [timeout-cancellation].html

64 lines
2.5 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<p>给定一个函数 <code>fn</code>&nbsp;,一个参数数组 <code>args</code> 和一个以毫秒为单位的超时时间 <code>t</code> ,返回一个取消函数 <code>cancelFn</code></p>
<p><code>cancelTimeMs</code>&nbsp;的延迟后,返回的取消函数 <code>cancelFn</code> 将被调用。</p>
<pre>
setTimeout(cancelFn, cancelTimeMs)
</pre>
<p>最初,函数 <code>fn</code> 的执行应该延迟 <code>t</code> 毫秒。</p>
<p>如果在 <code>t</code> 毫秒的延迟之前调用了函数 <code>cancelFn</code>,它应该取消 <code>fn</code> 的延迟执行。否则,如果在指定的延迟 <code>t</code> 内没有调用 <code>cancelFn</code>,则应执行 <code>fn</code>,并使用提供的 <code>args</code> 作为参数。</p>
<p>&nbsp;</p>
<p><strong class="example">示例 1:</strong></p>
<pre>
<b>输入:</b>fn = (x) =&gt; x * 5, args = [2], t = 20
<b>输出:</b>[{"time": 20, "returned": 10}]
<b>解释:</b>
const cancelTimeMs = 50;
const cancelFn = cancellable((x) =&gt; x * 5, [2], 20);
setTimeout(cancelFn, cancelTimeMs);
取消操作被安排在延迟了 cancelTimeMs50毫秒后进行这发生在 fn(2) 在20毫秒时执行之后。</pre>
<p><strong class="example">示例 2</strong></p>
<pre>
<b>输入:</b>fn = (x) =&gt; x**2, args = [2], t = 100
<b>输出:</b>[]
<b>解释:</b>
const cancelTimeMs = 50;
const cancelFn = cancellable((x) =&gt; x**2, [2], 100);
setTimeout(cancelFn, cancelTimeMs);
取消操作被安排在延迟了 cancelTimeMs50毫秒后进行这发生在 fn(2) 在100毫秒时执行之前导致 fn(2) 从未被调用。
</pre>
<p><strong class="example">示例 3</strong></p>
<pre>
<b>输入:</b>fn = (x1, x2) =&gt; x1 * x2, args = [2,4], t = 30
<b>输出:</b>[{"time": 30, "returned": 8}]
<b>解释:</b>
const cancelTimeMs = 100;
const cancelFn = cancellable((x1, x2) =&gt; x1 * x2, [2,4], 30);
setTimeout(cancelFn, cancelTimeMs);
取消操作被安排在延迟了 cancelTimeMs100毫秒后进行这发生在 fn(2,4) 在30毫秒时执行之后。
</pre>
<p>&nbsp;</p>
<p><strong>提示:</strong></p>
<ul>
<li><code>fn</code> 是一个函数</li>
<li><code>args</code> 是一个有效的 JSON 数组</li>
<li><code>1 &lt;= args.length &lt;= 10</code></li>
<li><code><font face="monospace">20 &lt;= t &lt;= 1000</font></code></li>
<li><code><font face="monospace">10 &lt;= cancelTimeMs&nbsp;&lt;= 1000</font></code></li>
</ul>