blob: e988592759fe6bec66ce73766e3d36e7f7257012 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
|
---
title: IdleDeadline
slug: Web/API/IdleDeadline
translation_of: Web/API/IdleDeadline
---
<div>{{APIRef("Background Tasks")}}</div>
<div id="interface_description">
<p><code>IdleDeadline</code> interface 在 {{domxref("Window.requestIdleCallback()")}}被调用的时候做为一个<code>IdleDeadline</code> interface类型的参数传递给requestIdleCallback方法的回调函数。它提供了一个方法, 可以让你判断用户代理(浏览器)还剩余多少闲置时间可以用来执行耗时任务{{domxref("..timeRemaining", "timeRemaining()")}},{{domxref("IdleDeadline.didTimeout", "didTimeout")}}, didTimeout属性用来判断当前的回调函数是否被执行因为回调函数存在过期时间(requestIdleCallback的第二个参数用来指定执行超时时间,即回调函数在规定的时间内是否被执行,如果没有执行didTimeout属性将为ture,如果任务是急需完成的此时应该忽略剩余时间逻辑上强制执行回调函数)。</p>
<p>学习更多的request callbacks工作原理请参考<a href="/en-US/docs/Web/API/Background_Tasks_API">Collaborative Scheduling of Background Tasks</a>.</p>
</div>
<h2 id="Properties">Properties</h2>
<dl id="property_definitions">
<dt>{{domxref("IdleDeadline.didTimeout")}} {{ReadOnlyInline}}</dt>
<dd>一个Boolean类型当它的值为true的时候说明callback正在被执行(并且上一次执行回调函数执行的时候由于时间超时回调函数得不到执行),因为在执行requestIdleCallback回调的时候指定了超时时间并且时间已经超时。</dd>
</dl>
<h2 id="methods" name="methods">Methods</h2>
<dl id="method_definitions">
<dt>{{domxref("IdleDeadline.timeRemaining()")}}</dt>
<dd>返回一个时间{{domxref("DOMHighResTimeStamp")}}, 并且是浮点类型的数值,它用来表示当前闲置周期的预估剩余毫秒数。如果idle period已经结束,则它的值是0。你的回调函数(传给requestIdleCallback的函数)可以重复的访问这个属性用来判断当前线程的闲置时间是否可以在结束前执行更多的任务。</dd>
</dl>
<dl id="method_definitions_obsolete">
</dl>
<h2 id="Example" name="Example">Example</h2>
<p>实例<a href="/en-US/docs/Web/API/Background_Tasks_API#Example">complete example</a> (在 <a href="/en-US/docs/Web/API/Background_Tasks_API">Cooperative Scheduling of Background Tasks API</a>.文章内)</p>
<h2 id="Specifications">Specifications</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Specification</th>
<th scope="col">Status</th>
<th scope="col">Comment</th>
</tr>
<tr>
<td>{{SpecName("Background Tasks")}}</td>
<td>{{Spec2("Background Tasks")}}</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="Browser_compatibility">Browser compatibility</h2>
<div>{{CompatibilityTable}}</div>
<div id="compat-desktop">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Chrome</th>
<th>Edge</th>
<th>Firefox (Gecko)</th>
<th>Internet Explorer</th>
<th>Opera</th>
<th>Safari (WebKit)</th>
</tr>
<tr>
<td>Basic support</td>
<td>47</td>
<td>{{CompatNo}}</td>
<td>{{CompatGeckoDesktop(53)}}<sup>[1]</sup></td>
<td>{{CompatNo}}</td>
<td>34</td>
<td>{{CompatNo}}</td>
</tr>
</tbody>
</table>
</div>
<div id="compat-mobile">
<table class="compat-table">
<tbody>
<tr>
<th>Feature</th>
<th>Android</th>
<th>Chrome</th>
<th>Firefox Mobile (Gecko)</th>
<th>Firefox OS</th>
<th>IE Phone</th>
<th>Opera Mobile</th>
<th>Safari Mobile</th>
</tr>
<tr>
<td>Basic support</td>
<td>53</td>
<td>55</td>
<td>{{CompatGeckoMobile(53)}}<sup>[1]</sup></td>
<td>{{CompatUnknown}}</td>
<td>{{CompatNo}}</td>
<td>37</td>
<td>{{CompatNo}}</td>
</tr>
</tbody>
</table>
</div>
<p>[1] Idle callback功能在Firefox 53版本中添加,但是默认处于未启用状态. 通过设置<code>dom.requestIdleCallback.enabled</code> 属性为true 来启用该功能。Idle callback功能在Firefox 55版本中默认启用。</p>
<h2 id="See_also">See also</h2>
<ul>
<li><a href="/en-US/docs/Web/API/Background_Tasks_API">Cooperative Scheduling of Background Tasks API</a></li>
<li>{{domxref("Window.requestIdleCallback()")}}</li>
<li>{{domxref("Window.cancelIdleCallback()")}}</li>
</ul>
|