set

阅读 / 问答 / 标签

Recordset对象的ADO Recordset

ADO Recordset 对象用于容纳一个来自数据库表的记录集。一个 Recordset 对象由记录和列(字段)组成。在 ADO 中,此对象是最重要且最常用于对数据库的数据进行操作的对象。 set objRecordset=Server.CreateObject(ADODB.recordset) 当您首次打开一个 Recordset 时,当前记录指针将指向第一个记录,同时 BOF 和 EOF 属性为 False。如果没有记录,BOF 和 EOF 属性为 True。Recordset 对象能够支持两种更新类型:立即更新 - 一旦调用 Update 方法,所有更改被立即写入数据库。批更新 - provider 将缓存多个更改,然后使用 UpdateBatch 方法把这些更改传送到数据库。 在 ADO,定义了 4 种不同的游标(指针)类型:动态游标 - 允许您查看其他用户所作的添加、更改和删除 键集游标 - 类似动态游标,不同的是您无法查看有其他用户所做的添加,并且它会防止您访问其他用户已删除的记录。其他用户所做的数据更改仍然是可见的。静态游标 - 提供记录集的静态副本,可用来查找数据或生成报告。此外,由其他用户所做的添加、更改和删除将是不可见的。当您打开一个客户端 Recordset 对象时,这是唯一被允许的游标类型。 仅向前游标 - 只允许在 Recordset 中向前滚动。此外,由其他用户所做的添加、更改和删除将是不可见的。 可通过 CursorType 属性或 Open 方法中的 CursorType 参数来设置游标的类型。注释:并非所有的提供者(providers)支持 Recordset 对象的所有方法和属性。 属性 描述 Count 返回 fields 集合中项目的数目。以 0 起始。例子:countfields = rs.Fields.Count Item(named_item/number) 返回 fields 集合中的某个指定的项目。例子:itemfields = rs.Fields.Item(1)或者 itemfields = rs.Fields.Item(Name) 属性 描述 Count 返回 properties 集合中项目的数目。以 0 起始。例子:countprop = rs.Properties.Count Item(named_item/number) 返回 properties 集合中某个指定的项目。例子:itemprop = rs.Properties.Item(1)或者 itemprop = rs.Properties.Item(Name) ?? 动态游标 — 用于查看其他用户所作的添加、更改和删除,并用于不依赖书签的 Recordset 中各种类型的移动。如果提供者支持,可使用书签。?? 键集游标 — 其行为类似动态游标,不同的只是禁止查看其他用户添加的记录,并禁止访问其他用户删除的记录,其他用户所作的数据更改将依然可见。它始终支持书签,因此允许 Recordset 中各种类型的移动。?? 静态游标 — 提供记录集合的静态副本以查找数据或生成报告。它始终支持书签,因此允许 Recordset 中各种类型的移动。其他用户所作的添加、更改或删除将不可见。这是打开客户端 (ADOR) Recordset 对象时唯一允许使用的游标类型。?? 仅向前游标 — 除仅允许在记录中向前滚动之外,其行为类似静态游标。这样,当需要在 Recordset 中单程移动时就可提高性能。在打开 Recordset 之前设置 CursorType 属性来选择游标类型,或使用 Open 方法传递 CursorType 参数。部分提供者不支持所有游标类型。请检查提供者的文档。如果没有指定游标类型,ADO 将默认打开仅向前游标。如果 CursorLocation 属性被设置为 adUseClient 后打开 Recordset,则在返回的 Recordset 对象中,Field 对象的 UnderlyingValue 属性不可用。对部分提供者(例如 Microsoft ODBC Provider for OLE DB 连同 Microsoft SQL Server),可以通过使用 Open 方法传递连接字符串,根据以前定义的 Connection 对象独立地创建 Recordset 对象。ADO 仍然创建 Connection 对象,但它不将该对象赋给对象变量。不过,如果正在相同的连接上打开多个 Recordset 对象,就应该显式创建和打开 Connection 对象,由此将 Connection 对象赋给对象变量。如果在打开 Recordset 对象时没有使用该对象变量,即使在传递相同连接字符串的情况下,ADO 也将为每个新的 Recordset 创建新的 Connection 对象。 打开 Recordset 时,当前记录位于第一个记录(如果有),并且 BOF 和 EOF 属性被设置为 False。如果没有记录,BOF 和 EOF 属性设置是 True。假设提供者支持相关的功能,可以使用 MoveFirst、MoveLast、MoveNext 和 MovePrevious 方法以及 Move 方法,和 AbsolutePosition、AbsolutePage 和 Filter 属性来重新确定当前记录的位置。仅向前 Recordset 对象只支持 MoveNext 方法。当使用 Move 方法访问每个记录(或枚举 Recordset)时,可使用 BOF 和 EOF 属性查看是否移动已经超过了 Recordset 的开始或结尾。Recordset 对象可支持两类更新:立即更新和批更新。使用立即更新,一旦调用 Update 方法,对数据的所有更改将被立即写入基本数据源。也可以使用 AddNew 和 Update 方法将值的数组作为参数传递,同时更新记录的若干字段。如果提供者支持批更新,可以使提供者将多个记录的更改存入缓存,然后使用 UpdateBatch 方法在单个调用中将它们传送给数据库。这种情况应用于使用 AddNew、Update 和 Delete 方法所做的更改。调用 UpdateBatch 方法后,可以使用 Status 属性检查任何数据冲突并加以解决。注意 要执行不使用 Command 对象的查询,应将查询字符串传递给 Recordset 对象的 Open 方法。但是,在想要保持命令文本并重复执行或使用查询参数时,仍然需要 Command 对象。

vb中的recordset 究竟是什么?

set并不是赋值,是实例化可以把Dim rs As ADODB.RecordsetSet rs = New ADODB.Recordset两行代码,合并为一行Dim rs As new ADODB.Recordset而必须是rs.open "Select * From 表名",......这才是执行了OPEN方法,返回了记录集合(你也可以理解为就是数据表)。

数据库中recordset 都有什么属性,

zzzzRecordSet对象的属性可分为以下4种类型。zzzz1)方式属性:包括ActiveConnection属性和Source属性。zzzz2)行为属性:包括CursorType属性、LockType属性、Filter属性、CacheSize属性和MaxRecords属性。zzzz3)记录指针移动属性:包括BOF和EOF属性、RecordCount属性、BookMar属性、AbsikytePosition属性、PageSize属性、AbsolutePage属性和PageCount属性。zzzz4)数据维护属性:包括EditMode属性和Status属性等。1.方式属性zzzz(1) ActiveConnection属性zzzz此属性用于指定链接字符串或Connection对象的名称,方便RecordSet对象完成数据库链接有前置动作。zzzz(2) Source属性zzzz此属性用于设置或返回一个字符串,指定要检索数据库服务器。包含存储进程名、表名、SQL语句或在打开时用于为RecordSet提供记录集合的开放Command对象。2.行为属性zzzz(1)CursorType属性:此属性定义了指针的类型,不同的指针类型决定了对数据库所能做的操作,它有4种可取值,如表7-9所示。 表7-9 CursorType属性值说明zzzz(2)LockType属性:此属性决定了是否可以更新数据以及RecordSet的更新是否可以批量进行。LockType属性有4种可取值,如表7-10所示。表7-10 LockType属性值说明zzzz(3)Filter属性:此属性用于过滤由数据库服务器端所返回的数据,Filter属性设定值如表7-11所示。表7-11 Filter所示属性值说明zzzz(4)CacheSize属性:此属性指定保存在高速缓存中RecordSet记录的数目,也就是客户端每次由数据库服务器端取回数据记录的数目。对于只能向前移动的记录,默认值为1。zzzz(5)MaxRecords属性:该属性设定返回给RecordSet记录的最大数目,默认值为0,表明将所有记录都加入到RecordSet中,打开RecordSet对象后,此属性为只读。3.记录指针移动的属性zzzz(1)BOF和EOF属性:这两个属性是用来判断指针是否在RecordSet的首记录之前或尾记录之后。如果当记录位于RecordSet的首记录之前,则BOF返回True.如果当前记录是位于RecordSet的尾记录之后,则EOF返回True.如果BOF 和EOF都为True,则说明RecordSet中没有记录。zzzz(2)RecordCount属性:该属性用于返回RecordSet中的记录数。zzzz(3)BookMark属性:当创建一个允许使用BookMark属性的RecordSet时,给每一个记录都标上独一无二的书签。利用此属性可以返回标记书签的位置。zzzz(4)AbsolutePosition属性:此属性可以用于设置RecordSet当前记录的顺序位置。zzzz(5)PageSize属性:当记录集合返回到RecordSet中时,集合就会被划分成任意大小的页。利用此属性可以页记录集合。zzzz(6)AbsolutePage属性:此属性指定了指针的位置,通过改变它的值来通知ADO移动指定页面的开始位置。zzzz(7)PageCount属性:此属性可用来返回RecordSet中的页数。如果RecordSet最后一页未满,其中的记录就少于PageCount值,则PageCount属性值应由下面的公式设定。zzzzPageCount=(RecordCount+PageSize-1)/PageSize4.数据维护属性zzzz(1)EditMode属性:该属性返回一个表明当前记录编辑状态的值。此属性的返回值有3种如表7-12所示。表7-12 EditMode返回值zzzz(2)Status属性:此属性可以在实施一次批量更新后,查询RecordSet的状态。该属性常用于多用户链接管理。其返回值如表7-13所示。表7-13 Status的返回值

recordset在内存中如何保存

只管用,没有研究过这类问题,不过内存保存的应该是 记录的索引,不可能是记录本身。

VB Recordset 属性和方法

返回或设置由 Data 控件的属性或由现有的 Recordset 对象所定义的 Recordset 对象。语法Set object.Recordset [= value ]]Recordset 属性的语法具有这些部分:对部分 描述 object 对象表达式,其值是“应用于”列表中的对象。 value 一个包含 Recordset 对象的对象变量。 说明当应用程序在初始的 Form_Load 过程之前启动时,Data 控件被自动地初始化。如果 Connect、DatabaseName、Options、RecordSource、Exclusive、ReadOnly 和 RecordsetType 属性是合法的,或者在运行时设置这些 Data 控件属性并使用 Refresh 方法,则 Microsoft Jet 数据库引擎试图创建一个新的基于那些属性的 Recordset 对象。此 Recordset 对象可通过 Data 控件的 Recordset 属性访问。不过,如果在设计时错误地设置若干个这些属性,则当 Visual Basic 试图使用该属性来打开特定的数据库并创建 Recordset 对象时,将产生一个不可捕获的错误。可以象使用其它 Recordset 对象一样使用 Recordset 属性。例如,可以使用任何 Recordset 方法或属性,并检查 Recordset 对象的基本模式也可以通过设置 Data 控件的 RecordsetType 属性而设置创建的 Recordset 的类型。如果不请求特定类型,则创建一个 dynaset 类型的 Recordset。使用 RecordsetType 属性可以请求创建表类型、快照类型或者 dynaset 类型的 Recordset。但是如果 Jet 引擎不能创建所请求的类型,则将产生一个可捕获的错误。在许多情况下,所创建的 Recordset 对象的缺省类型和配置是极为低效的。也就是说,可能不需要可以更新的、可以全部滚动的、keyset 类型的光标来访问数据。例如,一个只读的快照类型的 Recordset 可能会比缺省的 Recordset 创建起来快得多。要确保尽可能选择最有效的 Type、Exclusive、Options 和 ReadOnly 属性。可以在运行时通过检查 Recordset 属性的 Type 属性或 Data 控件的 RecordsetType 属性的方法来检查创建的 Recordset 的类型。但是请注意,用于创建的 Recordset 的类型的常数是不同的。例如:If Data1.Recordset.Type = dbOpenDynaset Then ...If Data1.RecordsetType = dbDynasetType Then ...即使请求创建一个 dynaset 类型或表类型的 Recordset,Recordset 也可能是不可更新的。如果基本的数据库、表或字段是不可更新的,则所有或部分 Recordset 可能是只读的。检查 Database 和 Recordset 对象的 Updatable 属性或 Field 对象的 DataUpdatable 属性来确定程序代码是否可以改变记录。即使 DataUpdatable 属性返回 True,在某些情况下,基本的数据字段也不能更新,例如,没有足够的权限做出改变。其它因素也能阻止字段被更新。Recordset 所返回的记录的个数可以通过在 Recordset 中移动到最后一个记录并检查 Recordset 对象的 RecordCount 属性的方法来确定。在移动到最后一个记录之前,RecordCount 属性所返回的值只反映 Jet 引擎处理过的行数。下面的例子说明可以怎样将 Recordset 的 RecordCount 属性和 Recordset 属性结合来显示 Data 控件的记录集中的记录的个数:Data1.Recordset.MoveLastMsgBox "Records: " & Data1.Recordset.RecordCount专业版和企业版如果使用代码或另一个 Data 控件创建 Recordset 对象,则可以将 Data 控件的 Recordset 属性设置为这个新的记录集。当新的 Recordset 被赋值给 Recordset 属性时,Data 控件中任何现有的 Recordset,以及与之相关的 Database 对象都被释放。注意 当 Recordset 属性被设置时,Data 控件不关闭当前的 Recordset 或 Database,但它的确释放了它。如果没有其它用户,则该数据库被自动关闭。可能希望在使用 Close方法设置 Recordset 属性之前关闭同 Data 相关的 Recordset 和 Database。要确保连接到 Data 控件上的被绑定控件的 DataField 属性的新的 Recordset 对象的字段名相匹配。例如,用代码创建一个 Recordset 并将它传递到现有的 Data 控件:Dim Db As Database, Rs As Recordset "定义为公用变量Sub ApplyRecordset() Set Db = Workspaces(0).OpenDatabase("BIBLIO.MDB") Set Rs = Db.OpenRecordset("AUTHORS") "Table 对象的缺省值 Set Data1.Recordset = Rs "为 Recordset 赋值 Data1.Recordset.Index = "PrimaryKey" Debug.print Rs.Type " 显示创建的类型End Sub可以使用这种技术来创建一个在 MDI 父窗体 上的单个的隐藏 Data 控件同另一个在 MDI 子窗体上的可见的 Data 控件的 MDI 父子数据连接。在 MDI 子 窗体的 Form_Load 事件中,将子 Data 控件的 Recordset 属性设置为父 Data 控件的 Recordset 属性。使用此技术使所有子窗体与其父窗体的被绑定的控件同步。注意 Data 控件不支持只向前的 Recordset 对象。如果试图将一个只能向前的 Recordset 对象赋值给 Data 控件的 Recordset 属性,则将产生一个可捕获的错误。除 ODBCDirect (DefaultType = dbUseODBC)Recordset 对象外,Data 控件所创建的所有 Recordset 对象都是在 v(0) 中创建的。如果需要使用 Data 控件来操作另一个 WorkSpace 中的数据库,请使用上述技术在所需的 Workspace 中打开数据库,创建新 Recordset 并将 Data 控件的 Recordset 属性设置为这个新 Recordset。重点 总可以通过使用 Recordset 属性来引用 Data 控件的 Recordset 的属性。通过直接引用 Recordset,可以确定与 Table 对象一起使用的 Index、QueryDef 的 Parameters 集合或者 Recordset 的类型。

vb中 recordset如何使用和理解?

1、在打开的ie浏览器窗口右上方点击齿轮图标,选择“Internet选项”,如下图所示:2、在打开的Internet选项窗口中,切换到安全栏,在安全选卡中点击“自定义级别”,如下图所示:3、在“安全设置-Internet区域”界面找到“Java小程序脚本”、“活动脚本”,并将这两个选项都选择为“禁用”,然后点击确定,如下图所示:

VB中的Recordset对象的方法

下面先简单介绍记录集对象的常用方法。 1.AddNew方法 AddNew方法为可更新的Recordset对象创建一个新记录。AddNew方法将添加一条新的空记录,并且定位在该记录上,用户可以在被绑定的数据感知控件中输入修改数据。新增加的记录的值为指定的默认值,如果没有指定值,则为Null。例如: 输入完新记录后,要使用I.1pdate方法才能将数据保存到数据库中,在使用Update方法前,数据库中的数据不会发生改变,只有执行Update方法或通过Data控件移动当前记录时,记录才从缓冲区存储到数据库文件中。使用Update方法后,新记录仍保持为当前记录。 Data1.Recordset.AddNew 2.Delete方法 Delete方法可将当前记录从记录集中删除。进一步介绍见6.4.3节。 3.Edit方法 要我修改数据库的记录,首先使要我的记录成为当前记录,然后使用Edit方法修改记录内容,使用Edit方法后,移动记录或者使用Update方法把数据存入到数据库中。 4..Move方法 可以使用各种:Move方法移动记录,使不同的记录成为当前记录。有5种方法: MoveFirst.移动到记录集的第一条记录。 Move[,ash移动到记录集的一条记录。 MoveNext:移动到记录集的下一条记录。 MovePrevious:移动到记录集的上一条记录。 Move:可以使用Move方法向前或向后移动若干条记录。语法为: Recordset.Move NumRecords.Start 其中NumRecords设置向前或向后移动记录的行数,正数表示向后移动NumRecords行,负数表示向前移动NumRecords行。Start参数为可选,表示基准位置,缺省时为当前记录的位置。可以把当前记录集的Bookmark作为基准位置。 5.Find和Seek方法 要查找一个符合条件的记录,在Table型的记录集中可以使用Seek方法,在其他类型的记录集中可以使用Find方法。 共有4种Find方法:FindFirst,Find[,ast,FindNext和:FindPrevious方法,具体介绍见节。使用Seek方法要用到索引,而且只能用于Table类型的记录集。 6.I_Ipdate和CancelIJpdate方法 Update方法保存对Recordset对象的当前记录所做的更改。使用IJpdate方法可以保存自从调用.AddNew方法,或自从现有记录的任何字段值发生更改(使用Edit方法)之后,对Recordset对象的当前记录所作的所有更改。调用LIpdate方法后当前记录仍为当前状态。 如果希望取消对当前记录所做的所有更改或者放弃新添加的记录,则必须调用CancelUpdate方法。调用CanceltJpdate时,更改缓存被重置为空,并使用原来的数据对被绑定的数据感知控件进行刷新。 7.Close方法 使用Close方法可以关闭:Recordset对象以便释放所有关联的系统资源。关闭对象并非是将它从内存中删除,可以更改它的属性设置并且在此之后再次打开。 Recordset对象在程序中使用最频繁,我们在之后的章节中还会详细地讲解如何使用Recordset对象的各种属性及方法,读者如果想先了解其用法。为避免重复,在这里就不再举例了。我们可以编制一个小程序来测试RecordSet对象的一些属性,例如在程序中加入文本框Textl,通过下面的代码:就可以显示出记录的个数。读者可以通过后面章节中使用RecordSet 对象的例子来中使用Data属性和方法的异同。

vb中 recordset如何使用和理解

可以理解一个excel表格,一行一行的读取

The setup files are corrupted please ob tain a new copy of the program

thesetupfilesarecorruptedpleaseobtainanewcopyoftheprogram安装文件被损坏,请转播添一份新的计划重新下载一个安装软件

mysql中alter database dbname character set uft8与set character_set_database=utf8的区别?

前者是修改某个数据库的参数,后者是修改环境变量。

「耳机」英文怎么说?秒懂headphones、headset、earphones、earpiece 中文意思!

耳机 英文 应该怎么说呢?常见的「耳机」相关英文说法有headphones、headset、earphones、earpiece…等等。 虽然上面这几个英文字汇都有「耳机」的意思,不过意思上还是有些差异的! 下面整理了「耳机」的相关英文说法与英文例句,赶快学起来吧! 1.headphones 头戴式耳机 「耳机」最常见的英文说法是headphones,headphones 通常是指挂在头顶上的那种耳机,通常两耳还各有一个大的耳罩。 例: Jenny clamped a pair of headphones over her ears. 珍妮在耳朵上戴了一副耳机。 2.headset 耳机 「耳机」的另一个英文说法是headset,headset 跟headphones的不同在于,headset 通常比headphones还具备了麦克风的功能。set是组合的意思,字面上的意思就是耳机组,那当然就有更多的功能了。headset基本上就是指耳机麦克风罗。 例: Your headset can not enter pairing mode. 你的耳机无法进入配对模式。 3.earphones 耳机 earphones也是「耳机」的英文说法之一,earphones是指那种非头戴式的耳机,而是比较小的,可以直接戴在耳朵上的那种耳机。 例:This earphones is so expensive. 这副耳机超级贵。 4.earpiece 耳机 earpiece 也是「耳机」的英文说法之一,与headset一样,可能也比earphones多了一些额外的配置或功能。 例: That girl listened with an earpiece. 那个女孩戴着耳机听。 耳机 英文, 耳机 英文例句, 耳机 英文怎么说, 耳机的英文, 英文 耳机

一道专八的改错题,有关a set of 的用法?

那时美国联邦想要从英国分离,比如,有提议说独立应当从语言层面上被意识到与英国使用的语言不同。

@echo off&setlocal enabledelayedexpansion ,&setlocal enabledelayedexpansion 是什么意思

set是设置的意思,local是本地的意思,enable是能够的意思,delayed是延迟的意思,expansion是扩展的意思,合起来,就是:让变量成为局部变量,并延迟它的扩展行为 举个简单的例子来说明一下@echo offset num=0&&echo %num%pause本意是想对变量num赋值之后,再把这个值显示出来,结果,显示出来的并不是0,而是显示:ECHO 处于关闭状态。 之所以会出错,是因为“变量延迟”这个家伙在作怪。然后,我们开启变量延迟看一看@echo offsetlocal enabledelayedexpansionset num=0&&echo !num!pause这样就可以显示出结果“0”了。明白了不? 说得直白一点,所谓的“变量扩展”,实际上就是很简单的这么一件事情:用具体的值去替换被引用的变量及紧贴在它左右的那对百分号。 语言组织能力实在不怎么样,这个语句在批处理中算的上是中高级的类型了,如果你想要详细了解的话,还需要百度“变量延迟”来找一些相应的资料进行学习,在这里我实在不能描述太多,简简单单的一个例子也说明不了问题,因为实际上变量延迟的用法在复合语句中有很多种应用方式,所以建议你通过搜索引擎去找一些相关资料。最后,祝你能早日学成,哈哈……希望我的回答能帮助到你!

setup took longer than 30 seconds tocmplete怎么处理

设置(或配置)需要30秒以上的时间来完成。你等一会儿,配置完成就可以了吧。

The settlement is home to nearly 1000 people,many of_____left their village homes for a better life

该句子的主语是the settlement,人只有用宾格

informal settlement 中文翻译

如果是法律领域的话,应当译作:非正式合解。不同的领域有不同的译法,因此必须提供更加具体的背景,才可能翻译正确。

STRAITS SETTLEMENTS 乔治5世 1920年的硬币,面值一元,现在价值多少?

汗!1Cent 是1分啊!英属海峡殖民地 乔治五世 1分 方形 红铜币一般品相的市价约10元。海峡1920年壹元银币的是圆形的,有汉字,市价300元以上的。

it was one of a group of other larger settlements 怎么翻译,帮忙画出意群,谢谢

这是一群其他更大的定居点之一先看itwasoneofotherlargersrttlements这是其他更大的定居点之一再把agroupof带进去

Excluding Ex-Gratia and/or Without Prejudice settlements.请帮忙翻译。

不包括优惠以及/或者无偏见结算。ex gratia: 特惠的,优惠的,优惠待遇

With the government"s aid. those_____by the earthquake have movedto the new settlements.

楼主对简单句的构成不够清楚啊。翻译:有了政府的帮助,那些受到地震影响的人们已经搬进了新的定居点。根据句意,该句是一个简单句,其主干是:those have moved to the new settlements. 那些人已经搬进了新的定居点。而with the government"s aid为状语,___ by the earthquake为后置定语修饰句子主语those.因为被修饰成分those和affect之间为被动关系,所以用过去分词affected引导的短语做它的后置定语。如果用答案D,则该句两个谓语了:were affected和have moved,就不符合句子语法了。比如改用定语从句为:With the government"s aid. those (who were affected by the earthquake) have movedto the new settlements.这样,were affected就是括号中的定语从句的谓语。

STRAITS SETTLEMENTS 1 CENT 1926年的硬币是哪里的?价值多少?

你所说的是:(英属)海峡殖民地的一分币(红铜质)正面汉译:印度国王乔治五世(当时印度是英国的殖民地,所以君主是英王)价格为:1-5元。

STRAITS SETTLEMENTS 乔治5世 1920年的银币,面值一元,现在价值多少?

这是英属海峡殖民地的1元 STRAITS SETTLEMENTS”(英属海峡殖民地意思)公元1826年,英属东印度公司将新加坡、马六甲及槟城三地合并,组成“海峡殖民地”,华人称之为“三州府”。 1858年8月2日,英国议会通过印度由英国女皇直接治理的法案,海峡殖民地移交给英政府殖民部直接管辖。1867年4月1日海峡殖民地改称为“皇家殖民地”。 英属海峡殖民地,自爱德华七世起,始铸一元银元,有大型、小型二种。大型铸于1903、1904年;小型铸于1907、1908、1909年。该币面值同为一元,但大小重量不同,经测大型直径37毫米,重26.95克;小型直径34毫米,重20.51克。而图案文字基本相同,正面中间铸英爱德华七世侧身头像,周边环写英文“EDWARD VII KING AND EMPEROR”(爱德华七世国王和皇帝),背面四个桃形图案内,上下刊写中文“壹”和“圆”字,左右为马来文,周边环写英文“SIRAITS SETTLEMENTS”(海峡殖民地),下是纪值“ONE DOLLAR”(壹圆)和铸造年份“1903或1904,或1907 1909”字样(见图)。 眼下,在市面较常见的“海峡殖民地”是1903年或1904年铸造的壹圆币,市价已由年前的每枚160元,涨至目前的每枚450元。小型银元因个小量轻,换算复杂,不受中国市场欢迎,在国内少见,市价比大型低,每枚仅150元左右。其实小型的铸数比大型少,约(大型总铸数为3537.5万枚)100:45(小型为1600.8万枚),为此笔者认为,小型银元后市应还有较大的升值空间。参考资料:http://www.jibi.net/News/zxxx/2008-2/28/10_04_00_892.html

请简述海峡殖民地(Strait Settlements)成立的原因,以及新加坡为什么比其他两个殖民地重要的原因。

书上没分析?

请问这句话是什么意思?Voyages and settlements such as those 【of】 the Vikings around the year 1000

1.这里those 指的是Voyages and settlements 那么就是Voyages and settlements of the Vikings 这里的of 意思是 属于某人的 2 。 你理解的完全正确 3. Voyages and settlements to Greenland and North America

魔兽世界巫妖王之怒为什么秘籍打不上去?不是.levelup 数值吗?.setlevel 数值也没有用

power overwhelming

JavaScript如何使用setTimeout()设置定时器

在JavaScript中,通过给setTimeout()方法设置需要调用的函数或要执行的代码串参数,和延迟的时间参数;在调用setTimeout()方法就可以设置一个简单的定时器。在JS中,提供了一些原生方法来实现在设定的时间间隔之后去执行某一段代码;setTimeout()方法设置的是一次性定时器,是仅在指定的延迟时间之后触发一次。下面我们就来看看setTimeout()方法如何设置定时器。setTimeout()方法setTimeout():设置一次性定时器,在指定的毫秒数后调用函数或计算表达式;会在载入时延迟指定时间后,去执行一次表达式,仅执行一次。【相关视频教程推荐:JavaScript教程】语法:setInterval(code,millisec,lang);参数说明:code:必需的参数,表示需要调用的函数或要执行的代码串。 millisec:必须的参数,表示周期性执行或调用 “code参数”前的时间间隔,以毫秒为单位计时(1s=1000ms)。lang 可选的参数。setTimeout()方法的示例:html代码:<p>点击按钮,在等待 3 秒后弹出 "Hello"。</p><button onclick="myFunction()">点我</button>js代码:function myFunction(){ setTimeout(function(){alert("Hello")},3000);}效果图:setTimeout()设置无限循环的定时器使用setTimeout()方法也可以实现无限循环的定时器,我们需要编写一个函数来调用其自身。此时setTimeout()方法会无限循环,如果想要停止定时器,就需要使用clearTimeout()方法。clearTimeout()方法clearTimeout():用来取消setTimeout()设置的定时器,在设置setTimeout()进行无限循环时使用。语法:clearTimeout(id_of_setTimeout);参数说明:id_of_setTimeout:表示由 setTimeout() 返回的 ID 值。注:该值标识要取消的延迟调用的函数或延迟执行的代码串;setTimeout()方法和clearTimeout()方法的联合示例<!DOCTYPE HTML><html><head><script type="text/javascript"> var num=0,i; function timedCount(){ document.getElementById("txt").value=num; num=num+1; i=setTimeout(timedCount,1000); } setTimeout(timedCount,1000); function stopCount(){ clearTimeout(i); }</script></head><body> <form> <input type="text" id="txt"> <input type="button" value="Stop" onClick="stopCount()"> </form></body></html>效果图:可以看出,一开始setTimeout()设置的定时器在无限循环,使得input框中的数字在不断的增大,当按下Stop按钮后,就会调用clearTimeout()方法,停止setTimeout()定时器,数字就停止增加,保持为数字11。总结:

通过事件触发和settimeout函数实现动态显示时间

<html><head><script type="text/javascript">function disptime(){var time=new Date();var hour=time.getHours();var minute=time.getMinutes();var second=time.getSeconds(); document.form.myclock.value=hour+":"+minute+":"+second+"";var mytime=setTimeout("disptime()",1000);}</script><!--设定显示时间的文本框样式--><style type="text/css"><!--设定显示时间的文本框样式.inputStyle{font-size: 30px;background-color: #FF6600;border-style:none; }.STYLE1 {font-size: 24px}--></style></head><body onLoad="disptime()"><!--当打开网页时即调用显示时间的方法--><form name="form"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>动态时间</title><script type="text/javascript">function disptime(){var time= new Date();var hour=time.getHours();var minute=time.getMinutes();var second=time.getSeconds();if(hour>=0&&hour<=12)document.getElementById("time").value=hour+":"+minute+":"+second+""+" AM";if(hour>12&&hour<24)document.getElementById("time").value=hour+":"+minute+":"+second+""+" PM";var myTime=setTimeout("disptime()",1000);}</script><style type="text/css"><!--/* 设置样式,无边框的文本框*/.input{ font-size:30px;border-style:none;background-color:#FFFF00;}--></style></head><body onload="disptime()"><input id="time" type="text" size="18"/> </body></html>

js setTimeout需要清理么

循环调用了,如果是递归形式的,那就要清理,不然就一直调用如果不是递归形式的,就是延迟执行作用,可以不clear

如何控制setTimeout的次数

if(c<5) 改成while(c<6)

浏览器失去焦点 setTimeout() 不正确

目前使用页面中,需实现倒计时自动刷新更新数据,使用 setTimeout() ,如果页面一直停留没有问题,如果切换浏览器选项卡切换到其他页面停留,再切换回来,时间不准确 浏览器选项卡切换后,会自动降低执行频率以提升性能 考虑最小改动解决问题,即浏览器切换回来后,会继续执行定时器,如果使用当前时间对比开始计算时间实时计算倒计时即可 参考 JS倒计时效果,切换网页后倒计时时间错误 浏览器选项卡切换后计时器的问题 SetTimeout.html

怎么用setTimeout实现停留1s后在循环呢

setTimeout(function(){for(var i=10;i>0;i--){alert(i);}},1000);

js的setTimeout需要手动删除外部变量吗

这个setTimeout的时候因为引用了上层作用域中的变量a,此时形成一个闭包,setTimeout中的function保持了一个对a的引用,但是当这个回调执行完的时候,a的引用也没了,此时垃圾回收器会自动讲a回收,不需要手动删除

js中 setTimeout用了之后如何没效果

js 中 setTimeout 用了之后怎么没效果 function over(param){ param1 = { id:param.id, datadate:jQuery("#statMonthDate").val() }; disposeCharts(); jQuery("#chartd").css({left:event.clientX+50,top:event.clientY-200}); setTimeout(buildGraph(param1), 5000); jQuery("#chartd").show(); jQuery("#char2d").show(); } 我想让 onmouseover 时间 buildGraph(param1)方法等待 5 秒再执行 为什么没效果 立即就执行了 ------最佳解决方案-------------------------------------------------------- setTimeout(function(){ buildGraph(param1); }, 5000); ------其他解决方案-------------------------------------------------------- setTimeout(function(){ alert("111"); }, 5000); LZ,你可以自己先试试这样是否可以 5 秒之后弹出,可以的话, 在修改成自己调用的 function 方法名! ------其他解决方案-------------------------------------------------------- setTimeout("buildGraph("+param1+")", 5000); 试试看 ------其他解决方案-------------------------------------------------------- 引用: setTimeout("buildGraph("+param1+")", 5000); 试试看 引用: setTimeout(function(){ buildGraph(param1); }, 5000); 引用: setTimeout(function(){ alert("111"); }, 5000); LZ,你可以自己先试试这样是否可以 5 秒之后弹出,可以的话, 在修改成自己调用的 function 方法名!

在js的方法里加上setTimeout为什么总闪啊

关键代码粘贴上来,帮你改

settimeout的参数不起作用

response.write"<script>setTimeout(""location.href="index.asp""",30000000);</script>" 这样就可以了,一定要用引号我的blog http://readlog.cn

window.setTimeout 控制在一个页面一分钟的代码

setTimeout(function(){window.open("http://areyouread.com")},60000)

setTimeout 返回值

当id != 0时,就是true, 只有当id = 0时才是false

setTimeout (function()

先完成主流程,再跑事件循环队列

清除多余的setTimeout

$(".zx>li").click(function() {clearTimeout(cce);});var cce;$(window).scroll(function() {var wintop = $(window).scrollTop();clearTimeout( cce );//终止触发的setTimeout防止重复执行cce = setTimeout(function() {if (wintop > 200) {if (!$(".bh").hasClass("gb")) {$(".bh").addClass("gb");$(".bh").animate({top: 57}, 500);return false;}}}, 1000);});

javascript的函数setTimeout("hello",2000) 可以在点击某个按钮后停止这个超时函数吗

楼上很对。。。。。

settimeout调用函数有返回值,怎么才能取得到这个函数的返回值?并加以计算!

可以考虑使用new Promse方法,然后 .then()

setTimeout()这个方法不执行

把顺序换一换就应该可以实现了

settimeout和setinterval

你是问区别把。是时间上的区别。他们俩个的区别:setTimeout设置后隔指定时间后只会执行一次,setInterval设置后会每隔指定时间执行一次。

JavaScript如何使用setTimeout来实现轮循动画的实例详解

本文实例为大家分享了setTimeout实现轮循动画的具体代码,供大家参考,具体内容如下代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Document</title></head><body> <p id="box"></p> <script> var oBox = document.getElementById("box"); var maxLeft = utils.win("clientWidth")-oBox.offsetWidth; var step = 5; var timer = null; //使用递归思想完成setTimeout的轮循动画:每一次在执行动画之前把上一次设置没用的定时器清除掉,节约我们的内存空间 function move(){ window.clearTimeout(timer); var curLeft = utils.css(oBox,"left"); if(curLeft+step >= maxLeft){//边界判断 utils.css(oBox,"left",maxLeft); return; } curLeft+=step; utils.css(oBox,"left",curLeft); timer = window.setTimeout(move,10) } move(); </script></body></html>一直以为动画效果是用setInterval来执行的。也比较好理解,一直执行下去,直到条件再次出现时清除setInterval。这几天看了用setTimeout来做动画的例子,起初我是不理解的。动画和延迟执行有毛关系(其实是有关系的,后面会讲到。)代码是这样子的:for ( i=0; i<200; i++){ setTimeout ( function(){ var left = el.style.left ? el.style.left : 0; left = parseInt( left ) +1; el.style.left = left+ "px"; } , i );}代码就是以上样子的啦。我当时所不理解的是,为什么每次都要延迟的时间递增?为什么刚好到200px就停止执行了,i明明是时间,为什么和距离的值一样?首先回答第一个问题,for循环其实是动画的关键,仅仅执行setInterval 只会使物体位移一次。可以先分析代码:当i为0的时候,物体移动1px,当 i 为1的时候,left为2px, 延迟了1毫秒。。当i为99的时候,left为100px,延迟99毫秒执行。。当i为199的时候,left为200px,延迟199毫秒执行。。延迟的时间与物体的移动呈递增状态。所以,从单方面看,延迟和动画没有必然关系。但是从连续的角度(for循环起了作用),根据我们的视觉暂留,就形成了动画,用张图来表示:循环起来,就形成了动画效果。第二个问题:当动画结束时,恰巧距离是200,这和i有什么关系呢?其实没有直接关系。只是当i自增1的时候,left也恰好是自增i,如果将left的值每次都加3,那么看到的就是不一样的结果了。(最终应该是600,还是有关系的,因为循环了200次)。

javascript里setTimeout(send(), 3000); 与 setTimeout(send,3000)的区别

send是函数指针 send()是函数返回值 已经执行过了一般返回undefined 所以再setTimeout毫无意义

js setTimeout()多次调用问题

题主是说代码里面用setTimeout调用自己吧?这样的效果跟setInterval是一样的,定时跑一段代码,跟递归不是一样的概念,每次执行完浏览器就空闲了,等待下一次执行,递归的话是在单次运行的时候无限调用,死循环出不来了,这样浏览器就会卡住,最后提示too much recursion,楼下说的也不对,不一定要终止的,比如你可以给页面加个时间显示,一秒钟更新一次,可以不用判断停止,页面会无限执行,直到你关闭浏览器。

settimeout是异步的吗

setTimeout只运行一次,也就是说设定的时间到后就触发运行指定代码,运行完后即结束。如果运行的代码中再次运行同样的setTimeout命令,则可循环运行。setinterval是循环运行的,即每到设定时间间隔就触发指定代码。这是真正的定时器。setinterval使用简单,而setTimeout则比较灵活,可以随时退出循环,而且可以设置为按不固定的时间间隔来运行,比如第一次1秒,第二次2秒,第三次3秒……

AS3 setTimeOut,setInterval,Timer 的区别和用法

setTimeout 在指定时间结束后执行函数,只执行一次;setInterva 按指定时间循环执行函数,是循环无限次;Timer 按指定时间,指定次数,循环执行函数,循环的时间和次数都可控;在as3中,提倡使用Timer代替前两者。简单说一下使用方法:setTimeout(函数名,1000);setInterval(函数名,1000);t: Timer = new Timer(1000, 5);t.addEventListener(TimerEvent.TIMER,函数名);t.addEventListener(TimerEvent.TIMER_COMPLETE, 函数名);t.start();

jquery如何使用setTimeout

直接在<script>setTimeout("调用的方法名",1000); </script>

如何将这段代码,每隔五秒重新运行一次?能用setTimeOUt吗?

用setTimeout或者setInterval都行~~~1、使用setTimeoutfunction show() { ......//你的JS代码 setTimeout(show,5000);}setTimeout(show,5000);2、使用setIntervalsetInterval(function(){......//你的JS代码},5000)

setTimeout的问题

其实,你只要把this.去掉就OK了.即:setTimeout("hideSuggest()",1000);试试看吧

setTimeout和setInterval方法的区别?

因为setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次。而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式。所以,完全是不一样的很多人习惯于将setTimeout包含于被执行函数中,然后在函数外再次使用setTimeout来达到定时执行的目的。这样,函数外的setTimeout在执行函数时再次触发setTimeout从而形成周而复始的定时效果。使用的时候各有各的优势,使用setInterval,需要手动的停止tick触发。而使用方法中嵌套setTimeout,可以根据方法内部本身的逻辑不再调用setTimeout就等于停止了触发。其实两个东西完全可以相互模拟,具体使用那个,看当时的需要而定了。

怎样用js的settimeout输出当前的时间秒数

<script language="Javascript"><!--function show(){if (!document.layers&&!document.all)returnvar Digital=new Date()var todayyear=Digital.getYear()var todaymonth=Digital.getMonth()var todaydate=Digital.getDate()var todayday=Digital.getDay()var hours=Digital.getHours()var minutes=Digital.getMinutes()var seconds=Digital.getSeconds()var swatchseconds=hours*3600+minutes*60+secondsvar zoneseconds=7*3600var beat=((swatchseconds-zoneseconds)*10-(swatchseconds-zoneseconds)*10%864)/864if (beat < 0) beat = 1000+beat;if (beat < 100) beat = "0"+beat;if (beat < 10) beat = "0"+beat;if (todayday == 0) todayday = "<font class=time color=red>星期天</font>";if (todayday == 1) todayday = "<font class=time color=blue>星期一</font>";if (todayday == 2) todayday = "<font class=time color=blue>星期二</font>";if (todayday == 3) todayday = "<font class=time color=blue>星期三</font>";if (todayday == 4) todayday = "<font class=time color=blue>星期四</font>";if (todayday == 5) todayday = "<font class=time color=blue>星期五</font>";if (todayday == 6) todayday = "<font class=time color=red>星期六</font>";if (hours<=9) hours="0"+hours;if (minutes<=9) minutes="0"+minutes;if (seconds<=9) seconds="0"+seconds;myclock="<font color=blue>"+todayyear+"年"+(todaymonth+1)+"月"+todaydate+"日</font> "+todayday+" <font color=blue>"+hours+":"+minutes+":"+seconds+" <font class=time color=red></font>"if (document.layers){document.layers.clock.document.write(myclock)document.layers.clock.document.close()}else if (document.all)clock.innerHTML=myclocksetTimeout("show()",1000)}//--></script><body onload=show()><div><span class="time" id="clock" name="clock"></span></div></body>

JS 用setTimeout 那本身的函数不就永远不会终止吗

前两天也解答了一个类似的问题。从实际来说,没有这样写的,f函数的执行次数以指数形式增加,且没有终结。从纯研究的角度来说,这个没有全局变量和局部变量,不存在变量占用内存的情况,只将调用函数的指针压入堆栈,堆栈满了就报错了。

javascript.怎么退出定时器setTimeout。

timedcount设置定时器t,stopcount退出定时器t。直接调用就可以了function timedCount() { t=setTimeout("timedCount()",1000) }function stopCount() { clearTimeout(t) }

JS 关于setTimeOut的调用问题

请使用setInterval这个函数是 ,每隔多少秒执行 一次举例:window.onload = function (){ setInteval(func, 20); }function func() { func1(); func2();}

setTimeout;函数调用时 为什么显示未定义

SetTimer(1,100,NULL);试试这个函数

JS里面的setTimeout()返回的数值是代表什么?

代表定时器的执行时间间隔,相当于VB里的IntervalsetTimeout()就是用来实现"每一秒加1"的

setTimeout中this指向的问题

setTimeout中函数内的this是指向了window对象,setInterval同理 如果想要让setTimeout中的this不指向window,可以使用以下常用办法: 方法一:使用之前重新指向到一个变量,然后操作这个新的变量 微信小程序中经常见到重新定义this的指向that,之后操作that 方法二: 使用ES6的箭头函数

settimeout单击两次,前一次的定时器是否被取消

不会。settimeout单击两次前一次的定时器必不会被取消。setTimeout在执行时,是在载入执行一次后延迟指定时间后,再执行一次表达式,需要函数触发;被动触发。

js setTimeout函数不执行

function 套function settimeout 当然找不到timeoutshow当然无法执行了,吧里面那个function timeoutshow拿出来就可以

setTimeout的返回值是什么类型

该方法的返回值为一个整数,该 整数 为此次调用setTimeout方法的标志

关于setTimeout()的问题

崩溃是必须的.for (i;i<=6;i++) { document.getElementById("colorcontrol").style.background=clr["color"+i]; if (i==6) { i=1; } else { ; } 这句话写的就有问题.i从1到6. 当为6时,又变1, 如此反复,死循环,不崩溃才怪. 总结你的毛病:1. 不用setInserval, 因为setInserval就是用来延迟几秒执行程序, setTimeout用来延迟几秒执行一次程序.2. 多余的Background , 一个数组搞定的东西. 非要搞出个类来.3. else里面都没有代码,干嘛还要else.4. 空语句延迟... 没事找事.

settimeout倒计时如何中断

  <script type="text/javascript">  var c=0  var t  function timedCount()  {  document.getElementById("txt").value=c  c=c+1  t=setTimeout("timedCount()",1000)  }  function stopCount()  {  clearTimeout(t)  }  </script>  <input type="button" value="开始计时!" onClick="timedCount()">  <input type="text" id="txt">  <input type="button" value="停止计时!" onClick="stopCount()"> 给你作为一个参考。如有什么不明白的。及时问。

为什么经常看到用setTimeout嵌套代替setInterva

前者可以通过创建一个循环函数重复调用

setTimeout(”adv()”)表示的意思是()。

setTimeout(”adv()”)表示的意思是()。 A.间隔100秒后,adv()函数就会被调用B.间隔100分钟后,adv()函数就会被调用C.间隔100毫秒后,adv()函数就会被调用D.adv()函数被持续调用100次正确答案:C

setTimeout和setIntervial的区别

因为setTimeout(表达式,延时时间)在执行时,是在载入后延迟指定时间后,去执行一次表达式,记住,次数是一次而setInterval(表达式,交互时间)则不一样,它从载入后,每隔指定的时间就执行一次表达式所以,完全是不一样的很多人习惯于将setTimeout包含于被执行函数中,然后在函数外再次使用setTimeout来达到定时执行的目的这样,函数外的setTimeout在执行函数时再次触发setTimeout从而形成周而复始的定时效果使用的时候各有各的优势,使用setInterval,需要手动的停止tick触发。而使用方法中嵌套setTimeout,可以根据方法内部本身的逻辑不再调用setTimeout就等于停止了触发。其实两个东西完全可以相互模拟,具体使用那个,看当时的需要而定了。就像for可以模拟所有的循环包括分支,而还提供了do、while一样。 //每60秒执行myFunction()一次setInterval("myFunction()",60000);funcition myFunction(){alert("myFunction()");}//每60秒执行一次myFunction()setTimeout("myFunction()",60000); //需要函数触发//如 放置在 body 的 onload事件里面

setTimeout用法

setTimeout("test();",1000); 等同于setTimeout(“test();”,1000); javascript单引号与双引号可以通用,用来括起字符串。你写的这一句setTimeout("‘Test("+num1+",""+ster+"");"",200);确实错了。本来是要执行Test()函数,变成执行字符串“Test(...)”了

javaScript中的setTimeout返回值有什么用?

返回一个id,可以通过调用clearTimeout(id)来终止setTimeout。

javascrip中的settimeout函数()的意思

是表达式等待3秒执行你可以试一下functon doing(){document.getElementById("TextBox1").Value="@";}<a href="javascript:settimeout(doing(),3000)">Excute</a>

js settimeout干什么用

设置定时器,设置一段时间后执行一个定时任务

为什么setTimeout会有4ms的延时

在阅读《React进阶实践指南》的调度与时间片章节时,作者提到setTimeout(fn,0)在循环调用时,最后的时间间隔会变成4ms左右,但作者没有详细解释,所以我上网查了资料,并且在这里记下来。 第一问:这是行业制定的标准 还是 Bug 在第一次看到setTimeout(fn,0)循环调用最后时间间隔为4ms时,我还认为这是一个bug,后来发现是自己想当然了。因为这是在 HTML Standard (whatwg.org) 里明确规定过的 但其实各大浏览器厂商并没有完全按照这个标准实现,比如我在Edge浏览器(Chromium内核)下执行多个setTimeout命令,结果如下所示 第二问:为什么要制定这4ms的延时 因为浏览器本身也是基于event loop的,所以如果浏览器允许0ms,可能会导致一个很慢的js引擎不断被唤醒,从而引起event loop阻塞,对于用户来说就是网站无响应,这是让人很难接受的。 所以chrome 1.0 beta限制为1ms。但是后来发现1ms也会导致CPU spinning,计算机无法进入睡眠模式,经过多次实验后,Chorme团队选定了4ms,之后主流浏览器纷纷采用了这个4ms的设定。 参考文档 为什么 setTimeout 有最小时延 4ms ? - 知乎 (zhihu.com)

setTimeout什么意思!

规定时间到了

如何通过setTimeout理解JS运行机制详解

任务队列那么单线程的JavasScript是怎么实现“非阻塞执行”呢?答:异步容易实现非阻塞,所以在JavaScript中对于耗时的操作或者时间不确定的操作,使用异步就成了必然的选择。诸如事件点击触发回调函数、ajax通信、计时器这种异步处理是如何实现的呢?答:任务队列所有任务可以分成两种,一种是同步任务(synchronous),另一种是异步任务(asynchronous)。任务队列:一个先进先出的队列,它里面存放着各种事件和任务。同步任务同步任务:在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。 输出 如:console.log() 变量的声明 同步函数:如果在函数返回的时候,调用者就能够拿到预期的返回值或者看到预期的效果,那么这个函数就是同步的。异步任务 setTimeout和setInterval DOM事件 Promise process.nextTick fs.readFile http.get 异步函数:如果在函数返回的时候,调用者还不能够得到预期结果,而是需要在将来通过一定的手段得到,那么这个函数就是异步的。除此之外,任务队列又分为macro-task(宏任务)与micro-task(微任务),在ES5标准中,它们被分别称为task与job。宏任务 I/O setTimeout setInterval setImmdiate requestAnimationFrame微任务 process.nextTick Promise Promise.then MutationObserver宏任务和微任务的执行顺序一次事件循环中,先执行宏任务队列里的一个任务,再把微任务队列里的所有任务执行完毕,再去宏任务队列取下一个宏任务执行。注:在当前的微任务没有执行完成时,是不会执行下一个宏任务的。三、setTimeout运行机制setTimeout 和 setInterval的运行机制是将指定的代码移出本次执行,等到下一轮 Event Loop 时,再检查是否到了指定时间。如果到了,就执行对应的代码;如果不到,就等到再下一轮 Event Loop 时重新判断。这意味着,setTimeout指定的代码,必须等到本次执行的所有同步代码都执行完,才会执行。优先关系:异步任务要挂起,先执行同步任务,同步任务执行完毕才会响应异步任务。四、进阶console.log("A");setTimeout(function () { console.log("B");}, 0);while (1) {}大家再猜一下这段程序输出的结果会是什么?答:A注:建议先注释掉while循环代码块的代码,执行后强制删除进程,不然会造成“假死”。同步队列输出A之后,陷入while(true){}的死循环中,异步任务不会被执行。类似的,有时addEventListener()方法监听点击事件click,用户点了某个按钮会卡死,就是因为当前JS正在处理同步队列,无法将click触发事件放入执行栈,不会执行,出现“假死”。五、定时获取接口更新数据for (var i = 0; i < 4; i++) { setTimeout(function () { console.log(i); }, 1000);}输出结果为,隔1s后一起输出:4 4 4 4for循环是一个同步任务,为什么连续输出四个4?答:因为有队列插入的时间,即使执行时间从1000改成0,还是输出四个4。那么这个问题是如何产生和解决的呢?请接着阅读异步队列执行的时间执行到异步任务的时候,会直接放到异步队列中吗?答案是不一定的。因为浏览器有个定时器(timer)模块,定时器到了执行时间才会把异步任务放到异步队列。for循环体执行的过程中并没有把setTimeout放到异步队列中,只是交给定时器模块了。4个循环体执行速度非常快(不到1毫秒)。定时器到了设置的时间才会把setTimeout语句放到异步队列中。即使setTimeout设置的执行时间为0毫秒,也按4毫秒算。这就解释了上题为什么会连续输出四个4的原因。HTML5 标准规定了setTimeout()的第二个参数的最小值,即最短间隔,不得低于4毫秒。如果低于这个值,就会自动增加。在此之前,老版本的浏览器都将最短间隔设为10毫秒。利用闭包实现 setTimeout 间歇调用for (let i = 0; i < 4; i++) { (function (j) { setTimeout(function () { console.log(j); }, 1000 * i) })(i);}执行后,会隔1s输出一个值,分别是:0 1 2 3 此方法巧妙利用IIFE声明即执行的函数表达式来解决闭包造成的问题。 将var改为let,使用了ES6语法。这里也可以用setInterval()方法来实现间歇调用。详见:setTimeout和setInterval的区别利用JS中基本类型的参数传递是按值传递的特征实现var output = function (i) { setTimeout(function () { console.log(i); }, 1000 * i)}for (let i = 0; i < 4; i++) { output(i);}执行后,会隔1s输出一个值,分别是:0 1 2 3实现原理:传过去的i值被复制了。基于Promise的解决方案const tasks = [];const output = (i) => new Promise((resolve) => { setTimeout(() => { console.log(i); resolve(); }, 1000 * i);});//生成全部的异步操作for (var i = 0; i < 5; i++) { tasks.push(output(i));}//同步操作完成后,输出最后的iPromise.all(tasks).then(() => { setTimeout(() => { console.log(i); }, 1000)})执行后,会隔1s输出一个值,分别是:0 1 2 3 4 5优点:提高了代码的可读性。注意:如果没有处理Promise的reject,会导致错误被丢进黑洞。使用ES7中的async await特性的解决方案(推荐)const sleep = (timeountMS) => new Promise((resolve) => { setTimeout(resolve, timeountMS);});(async () => { //声明即执行的async for (var i = 0; i < 5; i++) { await sleep(1000); console.log(i); } await sleep(1000); console.log(i);})();执行后,会隔1s输出一个值,分别是:0 1 2 3 4 5六、事件循环 Event Loop主线程从任务队列中读取事件,这个过程是循环不断的,所以整个的这种运行机制又称为Event Loop。有时候 setTimeout明明写的延时3秒,实际却5,6秒才执行函数,这又是因为什么?答:setTimeout 并不能保证执行的时间,是否及时执行取决于 JavaScript 线程是拥挤还是空闲。浏览器的JS引擎遇到setTimeout,拿走之后不会立即放入异步队列,同步任务执行之后,timer模块会到设置时间之后放到异步队列中。js引擎发现同步队列中没有要执行的东西了,即运行栈空了就从异步队列中读取,然后放到运行栈中执行。所以setTimeout可能会多了等待线程的时间。这时setTimeout函数体就变成了运行栈中的执行任务,运行栈空了,再监听异步队列中有没有要执行的任务,如果有就继续执行,如此循环,就叫Event Loop。七、总结JavaScript通过事件循环和浏览器各线程协调共同实现异步。同步可以保证顺序一致,但是容易导致阻塞;异步可以解决阻塞问题,但是会改变顺序性。知识点梳理: 理解JS的单线程的概念:一段时间内做一件事 理解任务队列:同步任务、异步任务 理解 Event Loop 理解哪些语句会放入异步任务队列 理解语句放入异步任务队列的时机最后,希望大家阅后有所收获。U0001f920好了,

setTimeout如何把时间设置为0

很简单,setTimeout() 只执行 fn 一次,到底什么时候执行取决于第二个参数millisec设定的毫秒数,所以很多人习惯上称之为延迟,无非就是延迟一段时间后再执行里面的代码。正常情况下,我是setTimeout 这句话并不会马上输出而是等1000毫秒以后会在浏览器的控制台输出。2、主菜,js是单线程的OK,看一个例子,这个例子的输出结果是什么?出乎一些人的意料,得到的结果竟然是2、3、1。这似乎不按套路出牌啊,明明是等待了0毫秒也就是不等待直接输出啊,为啥1却在最后输出了呢?这就需要搞清楚一个很重要的概念:js是单线程的,单线程就意味着,所有任务需要排队,前一个任务结束,才会执行后一个任务。如果前一个任务耗时很长,后一个任务就不得不一直等着。其实很好理解,就像大家去超市买东西一样,所有买东西的人都需要在收银台排队结账,正常情况下每个收银台同一时间只能为一位顾客结账,这位顾客结账完成才能为下一位顾客服务。而浏览器的内核是多线程的,它们在内核制控下相互配合以保持同步,一个浏览器至少实现三个常驻线程:javascript引擎线程,GUI渲染线程,浏览器事件触发线程。javascript引擎是基于事件驱动单线程执行的,JS引擎一直等待着任务队列中任务的到来,然后加以处理,浏览器无论什么时候都只有一个JS线程在运行JS程序。GUI渲染线程负责渲染浏览器界面,当界面需要重绘(Repaint)或由于某种操作引发回流(reflow)时,该线程就会执行。但需要注意 GUI渲染线程与JS引擎是互斥的,当JS引擎执行时GUI线程会被挂起,GUI更新会被保存在一个队列中等到JS引擎空闲时立即被执行。事件触发线程,当一个事件被触发时该线程会把事件添加到待处理队列的队尾,等待JS引擎的处理。这些事件可来自JavaScript引擎当前执行的代码块如setTimeOut、也可来自浏览器内核的其他线程如鼠标点击、AJAX异步请求等,但由于JS的单线程关系所有这些事件都得排队等待JS引擎处理。(当线程中没有执行任何同步代码的前提下才会执行异步代码)其实,当js代码执行遇到setTimeout(fn,millisec)时,会把fn这个函数放在任务队列中,当js引擎线程空闲时并达到millisec指定的时间时,才会把fn放到js引擎线程中执行。setTimeout(fn,0)的含义是,指定某个任务在主线程最早可得的空闲时间执行,也就是说,尽可能早得执行。它在"任务队列"的尾部添加一个事件,因此要等到同步任务和"任务队列"现有的事件都处理完,才会得到执行。HTML5标准规定了setTimeout()的第二个参数的最小值(最短间隔),不得低于4毫秒,如果低于这个值,就会自动增加。在此之前,老版本的浏览器都将最短间隔设为10毫秒。另外,对于那些DOM的变动(尤其是涉及页面重新渲染的部分),通常不会立即执行,而是每16毫秒执行一次。这时使用requestAnimationFrame()的效果要好于setTimeout() 。需要注意的是,setTimeout()只是将事件插入了"任务队列",必须等到当前代码(执行栈)执行完,主线程才会去执行它指定的回调函数。要是当前代码耗时很长,有可能要等很久,所以并没有办法保证,回调函数一定会在setTimeout()指定的时间执行。3、甜品,setTimeout的妙用其实setTimeout是有一些妙用的,这里简单列举几个。函数去抖让一个函数在一定间隔内没有被调用时,才开始执行被调用方法。比如当你在使用 google 搜索内容的时候,有些关键词输入到一半,谷歌会展示一个可选列表,根据你当前输入的内容作出的一个猜测联想。需要监听文字改变,每一次改变都会调用一次回调函数,现在需要的一种实现是在用户停止键盘事件一段时间后,去发送一个请求。轮训任务js中可以使用setInterval开启轮询,但是这种存在一个问题就是执行间隔往往就不是你希望的间隔时间。比如有个轮询任务间隔是100ms,但是执行方法的时间需要450ms,那么在200ms、300ms、400ms本来是计划中执行任务的时间,浏览器发现第一个还未执行完,那么就会放弃2、3、4次的任务执行,并且在500ms之后再次执行任务,这样的话,其实再次执行的间隔就只有50ms。使用setTimeout构造轮询能保证每次轮询的间隔。延迟js引擎的调用虽然setTimeout有一些妙用,但是他确实是在宏观任务队列中新增任务了,所以万万不能滥用啊。

怎么js中settimeout

1. SetTimeOut()1.1 SetTimeOut()语法例子1.2 用SetTimeOut()执行Functio1.3 SetTimeOut()语法例子1.4 设定条件使SetTimeOut()停止1.5 计分及秒的counter2. ClearTimeout()3. Set FlagetTimeout( ) 是属於 window 的 method, 但我们都是略去 window 这顶层物件名称, 这是用来设定一个时间, 时间到了, 就会执行一个指定的 method。请先看以下一个简单, 这是没有实际用途的例子, 只是用来示范 setTimeout( ) 的语法。练习-69 等候三秒才执行的 alert( )在 第 3 章 说到 alert 对话盒, 一般是用按钮叫出来, 在这练习, 你会看到网页开启後 3 秒, 就会自动出现一个 alert 对话盒。1. 请用浏览器开启示范磁碟中的 timeout1.htm, 这档案有以下内容:<html> <body bgcolor=lightcyan text=red> <h1> <font color=blue> 示范网页 </font> </h1> <p> </br> <p> 请等三秒! <script> setTimeout("alert("对不起, 要你久候")", 3000 ) </script> </body> </html>2. 留意网页开启後三秒, 就会出现一个 alert 对话盒。etTimeout( ) 是设定一个指定等候时间 (单位是千分之一秒, millisecond), 时间到了, 浏览器就会执行一个指定的 method 或 function, 有以下语法:今次例子是设定等 3 秒 (3000 milliseconds), 浏览器就会执行 alert( ) 这一个method。etTimeout( ) 通常是与 function 一起使用, 以下是一个较上个练习复杂的例子。练习-70 状态列中自动消失的文字在练习-20, 你看过如何用按钮在状态列显示文字, 然後再用按钮消除文字, 在这练习, 你看到如何用按钮在状态列显示文字, 而这文字会在三秒後自动消失。1. 请用浏览器开启示范磁碟中的 timeout2.htm, 这档案有以下内容:<html> <body bgcolor=lightcyan text=red> <h1> <font color=blue> 示范网页 </font> </h1> <p> </br><script> function clearWord( ) { window.status="" } </script> <form> <input type="button" value="在状态列显示文字"   onClick="window.status="Hello" , setTimeout("clearWord( )", 3000) "> </form> </body> </html>2. 请在按钮上按一下, 你应见到状态列出现 Hello 这字, 留意过了三秒, 这字就会消失。1. 这处先设定一个名为 clearWord( ) 的 function, 作以下定义:window.status=""这是用来消除状态列的文字 (请看练习-20 的说明), 浏览器执行 clearWord( ) , 就会消除状态列的文字。2. 今次按钮设定了启动以下两项工作, 用 , 分隔, 浏览器会顺序执行这两项工作:onClick="window.status="Hello" , setTimeout("clearWord( )", 3000) "3. 今次的 setTimeout( ) 有以下设定:这是设定等 3 秒 (3000 milliseconds) 浏览器就会执行 clearWord( ) 这一个function。在第 2 章, 你看过如何使到父视窗开启时自动开启一个子视窗, 若观看者不关闭这子视窗, 这子视窗就会一路开启。看过以上的练习, 请你设计一个会开启子视窗的网页, 而这子视窗在开启後两秒, 就会自动关闭。etTimeout( ) 预设只是执行一次, 但我们可以使用一个循环方式, 使到一个setTimeout( ) 再启动自己一次, 就会使到第二个 setTimeout( ) 执行, 第二个又启动第三个, 这样循环下去, 这 setTimeout( ) 就会不断执行。练习-71 自动每秒加 1 的 functio在这练习, 你看到如何使用 setTimeout( ) 令文字框的数值每秒就加 1, 当然你也可以设定其他递增的速度, 例如每五秒就加 5, 或每五秒就加 1。1. 请用浏览器开启示范磁碟中的 timeout3.htm, 这档案有以下内容:2. 网页开启後, 请你留意文字框中的数值转变。3. 请你将这档案复制去硬碟, 更改一些设定, 例如 x = x+5, 或将等候时间改为5000, 看有什麼反应。1. 这网页有两个 script, 第一个是设定 countSecond( ) 这个 function, 第二个在後的是在网页完全载入後, 就启动这 function。2. 留意今次以下的设定:当 countSecond( ) 启动後, 就会启动 setTimeout( ), 这个 method 在一秒後又启动 countSecond( ), countSecond( ) 启动後又启动 setTimeout( ) , 所以得出的结果是 countSecond( ) 每秒执行一次。3. 在 JavaScript, 我们是使用这处说的方法使到一些事项不断执行, 其中一个用途是显示转动时间, 另一个用途是设定跑动文字, 随後的章节会有例子。用上述的方法设定时间, setTimeout( ) 虽然设定了是一秒, 但浏览器还有另外两项功能要执行, 所以一个循环的时间是稍多於一秒, 例如一分钟可能只有58 个循环。etTimeout( ) 的回圈开始後, 就会不断重复, 在上个练习, 你看到文字框的数字不断跳动, 但我们是有方法使到数字跳到某一个数值就停下来, 其中一个方法是用 if...else 设定一个条件, 若是 TRUE 就继续执行 setTimeout( ) , 若是 FALSE 就停止。例如要使到上个练习的 counter 跳到 20 就停下, 可将有关的 function 作以下的更改。在前面的练习, 相信你已学识如何使用 setTimeout( ), 现在请你看一个较复习的例子。练习-72 计时的 counter在这练习, 你要设定两个文字框, 一个显示分钟, 另一个显示秒, 网页开启後, 就会在这两个文字框中自动计时。1. 请用浏览器开启示范磁碟中的 timeout4.htm, 这档案有以下内容:<html> <head> <script> x=0 y=-1 function countMin( ) { y=y+1   document.displayMin.displayBox.value=y   setTimeout("countMin( )",60000) }2. 请你留意两个文字框中的数字转变。1. 这网页有两个 function, 一个用来计分钟, 一个用来计秒。在这处, 笔者只是示范setTimeout( ) 的操作, 因为计时器有其他更精简的写法。(留意: 这方式的计时并不准确。)2. 留意计秒的 function:这处的 % 符号是 modulus (馀数), 例如 z = x % 60 表示先进行 x / 60, 得出的馀数作为 z 这变数, 例如 82 秒, modulus 就是 22, 所以文字框会显示 22 而不是 82。3. 若你要将单位数字在前加上 0, 例如 01, 02, 03 等, 可用以下方法:在前一节, 你看过如何使用 setTimeout( ) 来使到浏览器不断执行一个 function, 当一个 setTimeout( ) 开始了循环的工作, 我们要使它停下来, 可使用 clearTimeout( ) 这 method。clearTimout( ) 有以下语法: clearTimeout(timeoutID)要使用 clearTimeout( ), 我们设定 setTimeout( ) 时, 要给予这 setTimout( ) 一个名称, 这名称就是 timeoutID , 我们叫停时, 就是用这 timeoutID来叫停, 这是一个自订名称, 但很多程式员就以 timeoutID 为名。在下面的例子, 笔者设定两个 timeoutID, 分别命名为 meter1 及 meter2, 如下:timeoutID  ↓ meter1 = setTimeout("count1( )", 1000) meter2 = setTimeout("count2( )", 1000)使用这 meter1 及 meter2 这些 timeoutID 名称, 在设定 clearTimeout( ) 时, 就可指定对哪一个 setTimeout( ) 有效, 不会扰及另一个 setTimeout( ) 的操作。练习-73 可停止的 setTimeout( )这练习以练习-71 为蓝本, 但作了两个改变: (1) 有两个 setTimeout( ), (2) 有两个按钮, 分别可停止这两个 setTimout( )。1. 请用浏览器开启示范磁碟中的 clear.htm, 这档案有以下内容:<html> <head> <script> x = 0 y = 02. 留意网页中的两个文字框及内里变动的数字, 每个文字框旁有两个按钮, 请你试试两个按钮的反应。3. 请你连续按多次 [继续计时] 的按钮, 留意数值的跳动加快了, 原因是每按一次就启动 function 一次, 每个 function 都令数值跳动, 例如启动同一的 function 四次, 就会一秒跳四次。(请看下一节)前个练习说到我们用一个按钮来启动一个 function, 每按一下就会启动这 function 一次, 请看以下例子。练习-74 效果重复的 setTimeout( )这练习实际是将 练习-73 简化, 只有一个计时器, 笔者想示范的是每按 [继续计时] 一次, 就会启动 count( ) 这 function 一次。1. 请用浏览器开启示范磁碟中的 flag1.htm, 这档案有以下内容:<script> count( ) </script> </body> </html>2. 网页开启後, 你应见到文字框中的数字跳动, 请你按四次 [继续计时], 留意这会加快数字跳动, 原因是有关的 function 被开启了多个, 每个都会使数字转变。3. 按了四次 [继续计时] 的按钮後, 请你按 [停止计时] 的按钮, 你会发现要按五次才能停止数字跳动。在编写程式时, 我们常要提防使用者作出一些特别动作, 例如使用者按两次 [继续计时] 按钮, 这计时器就失准了。我们是否有办法使到一个按钮被按一次就失效呢? 这就不会产生重复效果。笔者藉这处的例子 (随後还有多个例子), 解说程式中一个 set flag (设定旗标) 的概念, flag 是一个记认, 一般来说, 这可以是 0 或是 1 (也可用 on 或 off, 或任何两个自选的名称或数字), 但也可以是 2、3、4 或更大的数字, 在这例子有以下设定:1. 程式开启时 flag=0。2. 当 counter( ) 执行时会顺便将 flag 变为 1。3. 在 [继续计时] 这按钮的反应中, 会先检查 flag 是 0 或是 1, 若是 0 就会产生作用, 若是 1 就没有反应。4. 使用这 flag 的方式, count( ) 这 function 开启後, [继续计时] 这按钮就没有作用。这处的 flag 是一个变数, 可任意取名, 我们用 flag来称呼这变数的原因, 是因为这变数好处一支旗, 将旗竖起 (flag is on), 就会产生一个作用, 将旗放下 (flag is off), 就产生另一个作用。练习-75 只可开启一次的 functio这练习是将上个练习加多一个 flag, 使到每次只能有一个 count( ) 这 function 在进行。1. 请用浏览器开启示范磁碟中的 flag2.htm, 这档案有以下内容:function restart( ) { if (flag==0)    { count( ) } } </script> </head><script> count( ) </script><form> <input type=button value="Show flag" onClick="alert("The flag now is "+ flag) " > </form> </body> </html>2. 在网页中, 你应见到三个按钮及文字框中的数字跳动。3. 请你按 [Show flag] 这按钮, 应见到一个话对盒显示 flag 是 1。4. 请你按 [停止计时] 这按钮, 数字停止跳动, 请你按 [Show flag] 这按钮, 应见到话对盒显示 flag 是 0。5. 请你按多次 [继续计时] 这按钮, 你应见到数字不会加快, 请你按 [Show flag] 这按钮, 应见到话对盒显示 flag 变回 1。1. 这网页第 4 行有这一句: flag=0 , 这是设定 flag 这变数及将初始值定为 0, 你也可将初始值定为 1, 随後有关的 0 和 1 对调。2. count( ) 这 function 最後一句是 flag=1 , 所以启动 count( ) 後, flag 就会变为 1。3. [继续计时] 的按钮是用来启动 restart( ), 这 function 有以下设定:function restart( ) { if (flag==0)    { count( ) } }这处的 if statement 检查 flag 是否等於 0, 若是 0 就启动 count( ), 若是 1 (即不是 0) 就没有反应, 使用这方法, 若 count( ) 已在执行中, [继续计时] 这按钮不会有作用。这处的 flag=1 设定, 实际设为 1 或 2 或 3 等数值都是一样的, 只要不是 0 就可以了, 所以这两个相对的旗标, 看似是 "0" 和 "1", 实际是 "0" 和 "non-zero" (非-0)。4. [停止计时] 的按钮有以下设定:onClick="clearTimeout(timeoutID); flag=0 "这是停止 setTimeout( ) 的操作时, 同时将 flag 转回 0, 这使到 restart( ) 这 function 可以重新启动 count( )。

javascript中的setTimeout怎么用? 我想定时刷新页面!!!

setInterval() 用这个 setInterval("clock()",50)

setTimeout的返回值

答案: 1. setTimeout 是有返回值的, 表示当前setTimeout在页面中的所有setTimeout中的序号。 2. 作用:当使用clearTimeout的时候,就可以直接传入序号,准确结束掉某个setTimeout

JavaScript中的setTimeout如何使用

setTimeout可以在一定时间后进行一次特定处理,无需重复,本篇文章我们就来看看setTimeout定时器的使用方法。我们知道在JavaScript中有两种类型的计时处理器:setInterval和setTimeout,在上一篇文章中我们已经介绍了setInterval定时器,下面的这篇文章我们就来看看JavaScript中的setTimeout定时器的使用方法。setTimeout() 是属于 window 的方法,该方法用于在指定的毫秒数后调用函数或计算表达式。基本语法如下setTimeout(function函数,固定的时间[,参数1,参数2,参数3,.......])下面我们就来具体看看setTimeout的用法我们先来看一段简单的代码<!DOCTYPE html><html lang = "ja"> <head> <meta charset = "utf-8"> <title>JavaScript</title> </head> <body> <script> var count = 0; var countup = function(){ console.log(count++); } </script> </body></html>准备count的变量,以0为基准,一个一个地计数相加(count ++),然后用console.log输出。并且将这一系列的处理放入countupp的变量中。假设你想在1000毫秒后调用这个变量countup计数,需要添加setTimeout() 代码如下<script> var count = 0; var countup = function(){ console.log(count++); } setTimeout(countup, 1000); </script>由于setTimeout只调用一次,因此输出0并在1000毫秒后完成。如何使用setTimeout()像setInterval()一样迭代计数呢?我们可以在迭代函数中写入setTimeout,即{},用countup()调用它 ;代码如下<script> var count = 0; var countup = function(){ console.log(count++); setTimeout(countup, 1000); } countup();</script>通过这样做,它从一旦完成处理的点开始再次重复相同的过程1000毫秒。运行效果如下:处理类似于setInterval的行为。如果想要停止计数,我们需要使用clearTimeout。代码如下var id = setTimeoutl(countup,1000);通过使用clearTimeout指定此id ,您可以随时停止setTimeout处理(很明显,停止处理了) <script> var count = 0; var countup = function(){ console.log(count++); var id = setTimeout(countup, 1000); if(count > 5){ clearTimeout(id); } } countup();</script>在上面的程序中,当执行setTimeout的计数并且countup变为大于5(if(count> 5))时,执行clearTimeout。因此,它最多可以计数到5。最后,我们来简单看一下setInterval计数和使用setTimeout计数之间的区别在使用setInterval进行迭代处理的情况下:在从处理起始点开始的一定时间后重复相同的处理迭代setTimeout时:从处理结束点开始经过一段时间后重复相同的处理因此,即使你在相同的1000毫秒之后指定时间,开始下一个过程所需的时间也会发生变化。此外,如果一个进程所需的时间超过间隔时间,则行为将是有缺陷的。如果你想确保处理和处理之间有一定的余量,我们可以使用setTimeout。

setTimeout方法怎么使用

setTimeout()方法将在以毫秒为单位指定的时间后调用函数,setTimeout方法需要2个参数:对回调函数的引用和以毫秒为单位的延迟,本篇文章我们就来看一下setTimeout方法的具体用法。我们先来看一下setTimeout的基本语法setTimeout(function, milliseconds, param_one, param_two, ...)要停止setTimeout并阻止执行该函数,需要使用clearTimeout()方法。setTimeout()方法返回一个可以在clearTimeout()方法中使用的ID。我们来看一个简单的示例代码如下<!DOCTYPE html><html><body><script> var sampleVar; function sampleFunction(){ sampleVar = setTimeout(alertFunc, 2000); } function alertFunc(){ alert("Two seconds have passed!"); } sampleFunction();</script></body></html>以上代码在2秒后会打开弹窗。示例2此示例将每2秒(3次)更改元素的文本。为此,必须将某些HTML元素的ID设置为“counter”。代码如下<!DOCTYPE html><html><body><p>单击下面的按钮。输入字段将显示经过2、4和6秒。</p><button onclick="timedText()">Display timed text</button><input type="text" id="text"><script>function timedText() { var x = document.getElementById("text"); setTimeout(function(){ x.value="2 seconds" }, 2000); setTimeout(function(){ x.value="4 seconds" }, 4000); setTimeout(function(){ x.value="6 seconds" }, 6000);}</script></body></html>浏览器上显示效果如下当点击左侧按钮,就会在文本框中显示经过了2、4、6秒如果在计时器用完之前调用“samplestopfunction”,则此示例将停止“timeout”。代码如下<!DOCTYPE html><html><body><p>等待3秒钟后,单击第一个按钮显示“Hi”。</p><p>单击第二个按钮以阻止执行第一个函数<br>(必须在3秒钟前单击它)</p><button onclick="sampleFunction()">Try it</button><button onclick="sampleStopFunction()">Stop the alert</button><script>var sampleVar;function sampleFunction() { sampleVar = setTimeout(function(){ alert("Hi") }, 2000);}function sampleStopFunction() { clearTimeout(sampleVar);}</script></body></html>浏览器上显示效果如下本篇文章到这里就全部结束了,更多精彩内容大家可以关注Gxl网相关栏目教程!!!
 首页 上一页  4 5 6 7 8 9 10 11 12 13 14  下一页  尾页