拍日夜延时视频延迟 毫秒的延迟多少好

Cisco - 了解
分组话音网络的延迟
了解分组话音网络的延迟
当设计时传输在信息包
、帧或者信元基础设施的语音的网络,了解和解决延迟组件在网络
是重要的。正确占所有潜在延迟保证整体网络性能是可接受
的。整体语音质量是许多要素的功能包括压缩算法、错误和
帧丢失、回波消除和延迟。本文解释延迟源当使用在分组网
络的时Cisco
路由器/网关。虽然示例适应对帧中继,概念
是可适用的对VocIp和Voice over ATM (VoATM)网络。
一个压缩的语音电路的
流如下所示。 模拟信号从电话被数字化到脉冲编码调制
(PCM)信号由语音编码器译码器(编码)。PCM
示例然后通过
对压缩语音到一个信息包格式为传输横跨广域网的压缩算法。
在网云远侧确切同样功能在反向顺序执行。整个流在
表2-1显示。
图2-1端到端语音流
根据如何配置网络,路由器/网关只可执行编码和压缩功能
或他们中的一个。例如,如果使用一个模拟语音系统,然后
路由器/网关在上图2-2执行编码解码器功能和压缩功能正如被显示
图2-2编码解码器功能在路由器/网
如果改为,使用数字PBX,PBX执行编码解码器功能,并且路
由器处理PCM示例通过对它PBX。示例在表2-3显示。
图2-3编码解码器功能在
用于Cisco路由器/网关
的高复杂性压缩算法工作在分析PCM示例块旁边语音编码传送的。
这些块在长度变化根据编码器。 例如,G.729算法使
用的基本块大小是10
毫秒而G.723.1算法使用的基本块大小是30ms
。 示例G.729压缩系统工作在表3-1如何显示。
图3-1语音压缩
模拟语音流被数字化到PCM示例并且传送到压缩算法在10毫
秒增加。朝前看在算法延迟讨论。
国际电信联盟(ITU)在推
荐G.114.推荐在表4.1定义了单向延迟三个波段和显示的This考虑网
络延迟为语音应用。
表4.1延迟规范
范围以毫秒
可接受对于多数
用户应用。
可接受在条件下管理员意识到传输时间和它是对用户
应用的传输质量的影响。
不可接受为一般网络规划目的然而,
它被认可在一些异常情况此限额将超出。
注意:&这些推荐是为与足够被控
制的响应的连接,暗示使用回波取消器。需要回波取消器当
单向延迟超出25毫秒时(G.131)。
些推荐比正常将适用在专用语音网络被安置对国家电信管理,并且
严密。 当终端用户位置和商业需要是着名的对网络设计员时
,更多延迟可能证明可接受。 为专用网络200毫秒延迟是一
个合理的目标和250毫秒限额,但应该设计所有网络这样最大期望的
语音连接延迟被知道并且减到最小。
有延迟的两种不同类型
:固定和变量。
固定延迟组件
在连接添加直接地到整体延迟。
延迟出现从出口干线缓冲区的排队延迟在串行端口连接到广域网。
这些缓冲区造成可变延迟,称为抖动,横跨网络。 可
变延迟通过消抖动缓冲区被处理在接受路由器/网关。消抖动
缓冲区在第5.6部分去抖动延迟(&#916描述了
图5-1在网络识别所有固定和可变延迟资源。每个来源在以下部分详细描述。
5-1:延迟源
并且呼叫处理延迟
(χn),编码器延迟是
数字信号处理器拿走的时间(DSP)压缩PCM示例块。由于不同
的编码器工作用不同的方式,此延迟随语音编码器使用的和处理器
速度变化。例如,代数码激励线性预测(ACE LP)算法工作在
毫秒PCM示例块,然后压缩他们旁边。
共轭代数码本激励线性预测(CS-ACELP)
进程的压缩
时间从2.5毫秒范围到10毫秒根据DSP处理器的装载。如果DSP
用四条语音信道充分地被装载,编码器延迟将是10ms。如果
DSP用一条语音信道只被装载编码器延迟将是2.5毫秒。对于
设计目的我们将使用10ms的最坏的情形时期。
解压时间是大致10%每个块的压缩时间。然而
,因为那里在每个帧可能是多个示例,解压时间与示例的数量是按
比例每个帧。结果,一个帧的最坏的情形解压时间与3个示例
是3 x 1ms或3ms。通常,当被压缩G.723.1输出一个示例在单
个帧时,被发送被压缩G.729输出二个或三个块在一个帧放置。
最好和最坏情形编码器延迟在表
表5 1最好和最坏情形处
必需的示例块
最佳的案件编码器延迟
最坏情形编码器延迟
ADPCM,G.726
CS-ACELP,
MP-MLQ,G.723.1
MP-ACELP,
压缩算法,依靠已知
语音特性正确地处理示例块N,必须有什么的若干知识在准确再生产
示例块的块N+1 N。此朝前看,实际上是另外的延迟,称为算
法延迟和有效增加压缩块的长度。
当然,这重复发生,这样块N+1调查块N+2,等等。实际影响
是5毫秒添加到整体延迟在链路。这意味着要求的总时间处理
信息块是10m带有5毫秒恒定的开销系数。 参见图3-1:
语音压缩。
G.726编码器算法
延迟是0毫秒
G.729编码器算法延迟
G.723.1编码器算法延迟
为示例在本文档的剩余
部分我们将假设G.729压缩与一个30 ms/30字节有效载荷。 为了实现设计和采取一个保守方法,下面的表假设最坏情形编码器
延迟。另外,简而言之,我们将混在一起编码器延迟、解压
延迟和算法延迟到我们将称编码器延迟的一个要素。
用于的等式生成集中编码器延迟参
式1:集中编码器延迟
集中编码器延迟为我们为本文档的剩余部分将使用的G.729
最坏的情形压缩时间每个块:
解压时间每个块x 3
算法延迟5毫秒
---------------------------
(χ) 18毫秒
封包化delay(πn)是花费的时间用encoded/compressed讲话填装信息
包有效载荷。此延迟是声码器需要的示例块大小和在单个帧
安置的块的数量的功能。分组延迟可能也称为Accumulation
延迟,因为语音示例在缓冲区累计在发布之前。
通常您应该力争分组延迟没有超过30
毫秒。在Cisco路由器/网关您应该,基于配置的有效载荷大小,使用以下
图从表5.2。
表5 2:普通的
有效载荷大小(字节)
分组延迟(毫秒)
有效载荷大小(字节
分组延迟(毫秒)
PCM,G.711
CS-ACELP,
MP-ACELP,
您必须平衡分组延
迟CPU负载。越低延迟,越高帧速率和越高负荷在CPU。
在更加一些老的平台,20毫秒有效载荷可能拉紧主CPU。
个语音示例虽则体验算法延迟并且分组延迟,实际上,进程交迭并
且有一个净好处作用从此管道安装。参见在上图显示的示例
图5-2:管道安装和封
图的顶部线路表示一个示例语音波形并且第二条线路是一份
时间表在10毫秒增加。 在
T0,CS-ACELP
法开始收集PCM示例从编码。在T1,算法收集了示例其第一个
10ms块并且开始压缩它。在T2,示例第一个块被压缩了。
注意在本例中压缩时间是2.5
毫秒,如是由
T 2表示的- T1。
第二个和第三个块收集在
T4。第三个
块是被压缩在T5 和信息包被装配和被发送(假设是瞬间的)在
T6。由于压
缩和分组进程的传递的本质,延迟从当进程开始对当发送语音帧是
T6- T0或者大约32.5毫秒。
为说明,上面的例子根据最佳的案
件延迟。如果使用了最坏情形下的延迟图是40毫秒、10毫秒
为编码器延迟和30毫秒为分组延迟。
注意上述示例忽略包括算法延迟。
(σn) 是要求的固定延
迟计时语音或数据帧网络接口,并且在Trunk直接地与时钟频率有关
。 切记在低时钟速度和小的帧大小必要的额外的标志位分离
帧是重大的。
表5.3显示为不同的帧
大小要求的连续延迟在不同的线路速度。此表为计算使用总
帧大小,不是有效载荷大小。
5.3:连续延迟以毫秒为不同的帧大小
帧大小(字节)
读从表,在64千
位每秒线路,CS-ACELP
语音帧带有38个字节(37+1的长度标志位)
毫秒连续延迟。
注意:&连续延迟为一个53 个字节ATM信元(T1:
0.275ms,E1:0.207ms)
微不足道归结于生产线上限
速度和小的信元大小。
在压缩的语音有效载
荷被构件之后,头添加并且帧在网络连接为传输排队。 由于
语音在路由器/网关应该有绝对优先级,语音帧必须只等待或者已经
显示,或者为其他语音帧的数据帧在它之前。语音帧在输出
队列根本等待所有之前的帧连续延迟。排队延迟
(ssn)是可变延迟并且依靠中
继速度和队列的状态。 清楚地有随机的元素与排队延迟相关
例如,假设我们是在64千位每秒
线路,并且那我们在一数据帧(48个字节)和一个语音帧(42个字节之
后)排队。由于有随机的自然至于多少48字节帧显示,我们能
平均安全假设,一半数据帧显示。使用数据从串行表,我们
的数据帧组件比6ms是* 0.5 =添加另一个语音帧的3ms.时期向前在
队列(5.25毫秒)
提供8.25毫秒的一个总时间排队延迟。
你如何分析排队延迟是至网络工程
师。通常,在安装之后,你应该为最坏的情况设计然后调整
性能网络。更多语音线路可用对用户,越高可能性平均的语
音信息包将必须等待在队列。由于优先级结构,也请勿切记
语音帧,必须在超过一数据帧之后等待。
公共帧中继或互联终
端位置的ATM网络是最大的延迟的来源为语音连接。网络交换
延迟(ωn)也是最难定
如果Cisco设备,或者某个其他
专用网络提供宽区域连通性,识别延迟独立组件是可能的。一般,固定的组件是从传播延迟在Trunk在网络之内,并且可变延迟
是从计时帧的排队延迟到和在中间交换机外面。 估计传播延
迟,或6 microseconds/km (G.114)广泛应用10 microseconds/mile
的一个普遍的估计,虽然半成品多路复用设备、回程运输、微波链
路和在运营商网络查找的其他要素创建许多例外。
延迟另一个重要组件是从排队在广
域网之内。在一个专用网络,测量现有的排队延迟或估计一
个每跳跃预算值在广域网之内可能是可能的。
典型的载波延迟为美国帧中继连接是40毫秒被修正的
和65毫秒总最坏情形下的延迟的25毫秒变量。简而言之,在
示例6-1,6-2 和6-3,我们包括40毫秒固定延迟的所有低速连续延
这些是美国帧中继运营商发布
的图,复盖任何地方到任何地方复盖在美国范围内。它将预
计比最坏的情形地理上严密的二个位置将有更好的延迟性能,但载
波正常提供最坏的情形。
营商有时提供优质服务,典型地为语音或系统网络体系结构(SNA)
数据流,网络延迟比标准服务级别其中保证和。例如,美国
载波最近宣布了这样一项服务带有50毫秒一个整体延迟限额,而不
是标准服务的65毫秒。
由于讲话是一项恒定的位元速率服务,必须取消抖动
从所有可变延迟在信号离开网络之前。在Cisco路由器/网关
这完成与稳定(Δn)缓
冲区在远端的(接受)路由器/网关。消抖动缓冲区变换可变延
迟成固定延迟,通过保持第一个示例被接受在时期在显示它之前。
此保存期间通认作为最初溢出延迟。
图5 3:消抖动缓冲区操作
消抖动缓冲区的适当的处理是重要。 如果示例被保
持在太短时间,在延迟的上变化在讲话可能导致缓冲区对在运行速
度之下和导致空白。如果示例被保持在太久时间,缓冲区能
超出,并且丢弃的数据包在讲话再导致空白。最后,如果信
息包被保持在太久时间,整体延迟在连接可能上升到不可接受的级
最佳最初溢出延迟为消抖动缓
冲区与总可变延迟是相等的沿连接,这显示在表5-4
图5 -4:可变延迟和消抖动
最初的恢复延迟是可配置的,并且缓冲区的最大深度在之前
溢出是正常设置为1.5或2.0
如果使用40毫秒指定延时设置,第一个语音示例接受
了当消抖动缓冲区空为40毫秒时将被暂挂在显示之前。这暗
示从网络收到一个后续信息包可能是多达40毫秒延迟(关于第一个信
息包)没有语音连续性任何损失:如果它被延迟超过40毫秒,
消抖动缓冲区将倒空并且收到的下一个信息包为40
毫秒将被保持
在播放之前重置缓冲区。这将导致一个空白由为大约40毫秒
显示的语音。
延迟的消抖动缓冲区
的实际摊缴是消抖动缓冲区的最初溢出延迟加上第一个信息包在网
络被缓冲的实际金额。最坏的情形两次是消抖动缓冲区初始
延迟(假设的通过网络的最初信息包体验仅最小缓冲延迟)。 实践上,在一定数量的网络交换跳跃,假设最坏的情形可能不是必
要的。计算在以下示例由要素1.5增加最初溢出延迟允许此作
接受路由器/网关有延迟通过解压功能,但这通过混在一起它考虑到
与压缩处理延迟一起如早先讨论。
通常承认的限额为质
量好的语音连接延迟是200毫秒单程(或250毫秒作为限额)。 作为延迟在此图上升,健谈的人和监听程序变得不同步,并且他们
同时经常讲话,或者两个等待其他讲话。此情况普通被呼叫
,讲话者交叠。当整体语音质量是可接受的时,用户可能查
找会话的踩高跷的本质不可接受懊恼。讲话者交叠在在卫星
连接移动的国际电话可能遵守(卫星延迟按500
毫秒、250毫秒上升
和250毫秒的顺序下来)。
说明多种网络配置和网络设计员需要考虑到的延迟。
图6 - 1:一跳示例连接
从以上图,在公共帧中继连接的典型的一跳连接也许有延迟
预算显示的表6.1。
表6 1:一跳延迟计算
固定(毫秒)
可变(毫秒)
迟,χ1
分组延迟,
Queuing/Buffering,ss1
连续延迟(64 kbps)
网络延迟(公共帧)
消抖动缓冲区延迟
二次跳跃公共网络示例与路由器/网关汇接
现在其中考虑一个分支机构间的连接在C7200在总部站点纵
排呼叫与目的地分组的星状结构网络。信号在延迟预算方面
在这种情况下坚持以被压缩格式通过中央C7200,造成严重的储蓄关
于下一个示例,在一个公共网络的双跳连接与PBX汇接交换机。
表6.2:二次跳跃公共网络延
迟计算与路由器/网关汇接
固定(毫秒)
可变(毫秒)
迟,χ1
分组延迟,
Queuing/Buffering,ss1
连续延迟(64 kbps)
网络延迟(公共帧)
MC3810的纵排延迟
Queuing/Buffering
(2 Mbps),σ2
网络延迟(公共帧
),ω2
消抖动缓冲区延迟
图6-3:二次跳
跃公共网络示例与PBX纵排
考虑一个分支机构间的连接在C7200在总部站点通过其中通
过连接与总部PBX为交换的一个分部对总部网络。语音信号必
须被解压和这里被稳定然后再压缩和被稳定第二次,造成额外的延
迟相对前一个示例。另外,二个CS-ACELP压缩循环减少语音
质量(请参阅多次压缩循环的作用)。
表6.3:二次跳跃公共网络延迟计算与PBX纵排
固定(毫秒)
编码器延迟,χ1
分组延迟,
Queuing/Buffering,ss1
连续延迟(64 kbps)
网络延迟(公共帧)
消抖动缓冲区延迟
编码器延迟,
分组延迟,
Queuing/Buffering,ss2
(2 Mbps),σ2
网络延迟(公共帧
),ω2
消抖动缓冲区延迟
使用PBX在中心
站点当交换机增加单方接连延迟从206毫秒到255毫秒,是接近ITU限
额为单向延迟。此网络类型配置要求工程师给予密切注意对
设计最小延时。
注意我们假设最坏
的情形为可变延迟(虽然两行程在公共网络不会同时看最大延迟)
和做更加乐观的假定为可变延迟最小地只将改进情况。然而
,带有关于固定和可变延迟的更好的信息的载波的帧中继网络,能
一定减少计算出的延迟。本地连接(例如州内)可以好预计有
延迟特性,但载波经常勉强产生延迟限制。
:二次跳跃专用网络示例与PBX纵排
示例4.3表示,假设最坏情形下的延迟,它是非常难保持计
算出的延迟在200毫秒以下当一个分支机构间的连接在任何一方时包
括一次PBX纵排跳跃在中心站点与公共帧中继网络连接。然而
,如果网络拓扑和数据流被知道,大量减少计算出的数字是可能的
。 这是因为载波一般产生的图由在一个广域的最坏的情形传
输和排队延迟限制,而设立更加合理的限额在一个专用网络是更加
一般被接受的图为交换机
的之间传输延迟是10 microseconds/mile等级。根据设备,
帧中继网络的传输交换延迟应该按1毫秒被修正的和排队的5毫秒变
量的顺序。 这些图是设备和数据流受抚养者: 如果
E1/T1使用,延迟形象为Cisco MGX WAN交换机比1ms是较少每交换机
总数Trunk。假设500
英哩距离和1毫秒被修正的和每次跳跃
毫秒变量,我们的延迟计算成为:
表6 4:二次跳跃专用网络延迟计算与PBX纵排
固定(毫秒)
编码器延迟,χ1
分组延迟,
Queuing/Buffering,ss1
连续延迟(64 kbps)
网络延迟(专用帧)
,ωS1 + ssS1+ ωS2 + ssS2
消抖动缓冲区延迟,Δ1
编码器延迟,
分组延迟,
Queuing/Buffering,ss2
(2 Mbps),σ2
网络延迟(专用帧
),ωS3 + ssS3
连续延迟(64 kbps),σS3
消抖动缓冲区延迟
传输/距离延迟(没
通过运行在一个
专用帧中继网络,通过PBX建立spoke到spoke的联系在中心站点和在
200毫秒形象之内坚持清楚地是可能的。
CS-ACELP压缩算法
不是确定性的,这意味着输入数据流不完全相同因为输出数据流出
。一次小量的失真在上图7-1被引入与每个压缩循环正如被显
图7-1:压缩作用
结果,多个CS-ACELP压缩循环迅速引入失真的重大的级别。
此附加失真作用不是如发音带有自适应差分脉冲编码调制
(ADPCM)算法。
除延迟的之外,作
用此特性的影响是那,网络设计员必须考虑那里多少个CS-ACELP
压缩循环在路径。
语音质量是主观
的,仍然但多数用户查找二压缩循环提供足够的语音质量。
第三个压缩循环通常导致显而易见的降低,可能是不可接
受的对一些用户。通常,网络设计员在路径应该限制
CS-ACELP压缩循环的数量到二。如果必须使用更多循环,让
用户首先听到它。
_在这上面的例子
above,它是显示当时时一个branch-to-branch分支机构间的连接是
纵排交换式通过这PBX (以PCM形式)在这总部站点,它经验更延迟比
如果是前后交换在这总部C7200。很清楚当时用于PBX交换,
有二个CS-ACELP压缩循环在路径,而不是这一个循环当被构筑的语
音由中央C7200时交换。语音质量将是好带有C7200-switched
示例(4.2),虽然那里可能是其他原因,例如告诉计划管理,在路径
可能要求PBX包括。
如果一个分支机
构间的连接通过中央PBX做,并且从第二个分组呼叫在公共语音网络
是延长的然后终止在一个手机网络,那里在路径三个CS-ACELP压缩
循环,并且显着更高的延迟。在此方案,质量将是显而易见
受影响。再次,网络设计员必须考虑最坏的呼叫路径和决定
是否将是可接受的产生的它用户网络、期望和商业需求。
如上所示,设计分组语音网络是相对容易的哪些超出
ITU的一般被接受的150毫秒单向延迟限额。
当设计分组语音网络时,工程师应该考虑多长时间将
使用这样连接,什么用户需求,并且什么类型的经营活动将是包含
的。 是可接受的情况这样连接特别是是不少见的。
和早先注释,如果帧中继连接不横
断一个大距离它是相当可能的网络的延迟性能比在示例显示的那好
如果纵排路由器/网关连接体验的
总延迟变得太极大,选择经常是配置额外的永久虚拟电路(PVC)直接
地在终止的MC3810s之间。 这添加循环费用到网络当载波每
通常充电,但它可能在某些情况下是必要的。微软研发超快触屏:延迟间隔仅为1毫秒
  北京时间3月12日消息,据科技博客TechCrunch报道,各类触摸屏产品受到了公众的广泛青睐,然而,在使用过程中常常会发生响应滞后的情况。对此,微软开发出一种超低延时的屏幕,并很可能实现商业化。
  微软应用科学研究组的保罗?迪茨(Paul Dietz)指出,触屏产品一般都会产生延时现象,平均延迟达100毫秒,用户触摸屏幕到屏幕响应任务之间有明显的滞后。
  当然,有时滞并不会妨碍用户的使用,但会有并未完全受控的感觉。举个例子,用户拖动iPad上某个图标时,该图标会跟随手指的移动路径,竭尽全力赶上操作者的移动速度。然而,对于迪茨及其研究团队而言,这依然不够完美。他们开发出一个模型,触摸操作和任务响应之间的间隔仅为1毫秒,远低于通常100毫秒的延时。
  当迪茨展示慢动作画面时,这一差距表现的更加明显。触屏操作指令输入到任务响应的速度逐渐衰减,迪茨的超低延时设备比起它的同胞们而言,显得更加自然。例如,实验中在平板上滑动一个格子,可以产生零时滞、无间断的瞬间响应,从而弥合了操作与交互响应之间的差距。
  用触笔操作界面的产品将从这项科技中受益匪浅。以三星10英寸的Galaxy Note为例,当用触笔操作时,可以看到该产品虽然努力以最快的速度响应,但其速度仍无法匹配。
  这项技术很酷,对于网民们而言无疑是一个重大的突破。微软对这项技术的态度看起来似乎只是理论上的,不过,作为一家企业,它也应该有一定的商业动机。
  美国新思国际公司的触屏专家们也曾在2011移动世界大会(MWC 2011)上展示过类似的低延时触屏,因此,可以看出,这项技术已成为行业内竞相追逐的热点。
  这项科技能否成为主流尚未可知。其中一个很大的障碍在于其执行成本,更大的问题在于消费者是否足够重视。目前上市的有延时触屏对于用户而言已足够好了,能够完成所需要的任务。因此,是否有必要在现有屏幕足够好的前提下,花费力气去升级屏幕技术呢?
作者:雨暄编辑:安然 来源:
•&•&
•&•&•&•&
•&•&•&•&•&•&•&•&
•&•&
•&•&•&•&
企业品牌榜世纪前线测网络连通质量:网络丢包率0.00%,网络延迟78毫秒(四兆电信的,以前两兆的网络延迟才40左右,)_百度知道
世纪前线测网络连通质量:网络丢包率0.00%,网络延迟78毫秒(四兆电信的,以前两兆的网络延迟才40左右,)
高手指教!!!!
提问者采纳
这个测试是不准确的.你是电信的,只有测试电信服务商提供的测试点才准确,但也只是代表你出口的大小,不能说明你访问外网也可以达到这种水平..网络访问过程中的速受到很多影响,网络的拥挤程度,是否需要跨网访问,节点的中转速度,访问的路线.到达服务器的性能等等,所有的一切都导致你的速度快慢.所以只有测试你服务商提供的测试点才能知道是否给你的带宽正常与否.那些网络上的测速根本没什么作用.另外你本机也要把能关闭的网络软件都关闭掉,否则出来的数据又有偏差了.丢包率代表数据传送的稳定性,你丢包是0,那就是稳定性很好.网络延迟,代表速度.一次不能说明问提,要取固定时间段的多次平均值.
提问者评价
其他类似问题
网络丢包率的相关知识
其他1条回答
延时好不好关系到很多东西~~具体要打开你的电脑才能知道~~这里说不清楚
您可能关注的推广
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁setTimeout延时0毫秒的作用 - xieex - 博客园
从事软件开发的交流平台
我的人生信念:态度决定一切
posts - 25, comments - 110, trackbacks - 4, articles - 0
经常看到setTimeout延时0ms的javascript代码,感到很迷惑,难道延时0ms和不延时不是一个道理吗?后来通过查资料以及实验得出以下两个作用,可能还有作用我还不知道,希望得知的朋友在后面评论上不吝指出。
1、实现javascript的异步;
正常情况下javascript都是按照顺序执行的。但是我们可能让该语句后面的语句执行完再执行本身,这时就可以用到setTimeout延时0ms来实现了。
setTimeout("alert(2)", 0);
虽然延时了0ms,但是执行顺序为:1,3,2
这样就保证setTimeout里面的语句在某一代码段中最后执行。&
2、在事件中,setTimeout 会在其完成当前任何延宕事件的事件处理器的执行,以及完成文档当前状态更新后,告诉浏览器去启用 setTimeout 内注册的函数。;
&举个例子来说这句话的意思,假如当某个事件在页面上建立一个文本框,并给文本框赋值(完成文档当前状态更新),然后将焦点定到文本框,并且选中文本框的内容(后面部分就需要用到setTimeout 延迟0ms实现,否则不好实现)。
先看个例子:
&1&!DOCTYPE&HTML&PUBLIC&"-//W3C//DTD&HTML&4.01//EN"&"http://www.w3.org/TR/html4/strict.dtd"&
&4&title&setTimeout&/title&
&5&script&type="text/javascript"&&
&6&(function(){
&8&&function&get(id){
&9&&&return&document.getElementById(id);
<span style="color: #&&}
<span style="color: #&&
<span style="color: #&&window.onload&=&function(){
<span style="color: #&&&get('makeinput').onmousedown&=&function(){
<span style="color: #&&&&var&input&=&document.createElement('input');
<span style="color: #&&&&input.setAttribute('type',&'text');
<span style="color: #&&&&input.setAttribute('value',&'test1');
<span style="color: #&&&&get('inpwrapper').appendChild(input);
<span style="color: #&&&&input.focus();
<span style="color: #&&&&input.select();
<span style="color: #&&&}
<span style="color: #&&&get('makeinput2').onmousedown&=&function(){
<span style="color: #&&&&var&input&=&document.createElement('input');
<span style="color: #&&&&input.setAttribute('type',&'text');
<span style="color: #&&&&input.setAttribute('value',&'test1');
<span style="color: #&&&&get('inpwrapper2').appendChild(input);
<span style="color: #&&&&setTimeout(function(){
<span style="color: #&&&&&input.focus();
<span style="color: #&&&&&input.select();
<span style="color: #&&&&},&0);
<span style="color: #&&&}
<span style="color: #&&&get('input1').onkeypress&=&function(){
<span style="color: #&&&&get('preview1').innerHTML&=&this.
<span style="color: #&&&}
<span style="color: #&&&get('input2').onkeypress&=&function(){
<span style="color: #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&setTimeout(function(){
<span style="color: #&&&&get('preview2').innerHTML&=&get('input2').
<span style="color: #&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&},0&);
<span style="color: #&&&}
<span style="color: #&&}
<span style="color: #&})();
<span style="color: #&/script&
<span style="color: #&/head&
<span style="color: #&body&
<span style="color: #&&h1&&code&DEMO1&/code&&/h1&
<span style="color: #&&h2&<span style="color: #、未使用&&code&setTimeout&/code&(未选中文本框内容)&/h2&
<span style="color: #&&button&id="makeinput"&生成&input&/button&
<span style="color: #&&p&id="inpwrapper"&&/p&
<span style="color: #&&h2&<span style="color: #、使用&&code&setTimeout&/code&(立即选中文本框内容)&/h2&
<span style="color: #&&button&id="makeinput2"&生成&input&/button&&/h2&
<span style="color: #&&p&id="inpwrapper2"&&/p&
<span style="color: #
<span style="color: #--------------------------------------------------------------------------
<span style="color: #&&h1&&code&DEMO2&/code&&/h1&
<span style="color: #&&h2&<span style="color: #、未使用&&code&setTimeout&/code&(只有输入第二个字符时,前一个字符才显示出来)&/h2&
<span style="color: #&&input&type="text"&id="input1"&value=""/&&div&id="preview1"&&/div&
<span style="color: #&&h2&<span style="color: #、使用&&code&setTimeout&/code&(输入时,字符同时显示出来)&/h2&
<span style="color: #&input&type="text"&id="input2"&value=""/&&div&id="preview2"&&/div&
<span style="color: #&/body&
<span style="color: #&/html&
<span style="color: #
<span style="color: #
现有的 JavaScript 引擎是单线程处理任务的。它把任务放到队列中,不会同步去执行,必须在完成一个任务后才开始另外一个任务。其实,这是一个把需要执行的任务从队列中跳脱的技巧。在DEMO1中,JavaScript 引擎在执行 onmousedown时,由于没有多线程的同步执行,不可能同时去处理刚创建元素的 focus 和 select 方法,由于这两个方法都不在队列中,在完成 onmousedown 后,JavaScript 引擎已经丢弃了这两个任务,正如第一种情况。而在第二种情况中,由于setTimeout可以把任务从某个队列中跳脱成为新队列,因而能够得到期望的结果。}

我要回帖

更多关于 视频延迟 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信