js如何实现等待1秒后执行一个事件

JavaScript012

js如何实现等待1秒后执行一个事件,第1张

需要准备的材料分别有:电脑、html编辑器、浏览器。

1、首先,打开html编辑器,新建html文件,例如:index.html。

2、在index.html中的<body>标签中输入:<button onclick="setTimeout(send, 1000)">btn</button>,<script>标签中输入js代码:function send() {document.body.innerText = 'use send'}。

3、浏览器运行index.html页面,点击btn按钮。

4、等待1秒后,确实执行了send()方法打印了“use send”文本。

JS:

setTimeout("这里写你等待1秒后执行的函数名",1000)

例:

function showHello()

{

document.write("你好!")

}

setTimeout("showHello()",1000)

可以这样:

var menu=getid("menu")

var li=gettag("li",menu)

for(var i=0i<li.lengthi++){

li[i].onmouseover=function(){

if(this.className.indexOf("show")<0)

{

setTimeout("showHello(this)",1000)

}

}

li[i].onmouseout=function(){

$(this).removeClass("show")

}

}

function showHello(obj)

{

$(obj).addClass("show")

}

异步执行的函数需要使用回调来获取返回值你那种想等待回调函数执行后再把结果作为返回值的想法是无法实现,并且是极不可取的因为你并不知道需要多久该回调函数才能执行,让主线程阻塞在这儿等待不是一个正确的做法。

正确的做法还是在回调函数中获得值进行处理推荐写法:

var addre =""var bm = new BMap.Map("container")gpsxy = function (xx,yy,i,callback){//添加一个参数作为回调函数,该函数可以获取addre参数

var gpsPoint = new BMap.Point(xx,yy)

bm.clearOverlays()var marker = new BMap.Marker(gpsPoint)bm.addOverlay(marker)

bm.setCenter(gpsPoint)var gc = new BMap.Geocoder()

gc.getLocation(gpsPoint, function(rs){ var addComp = rs.addressComponents

addre = addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street + ", " + addComp.streetNumbercheck()

if(callback) callback(addre)//把addre传递到回调函数中,这样就可以在函数外部使用返回值了 })}

调用示范:gpsxy(10,10,1,function(addre){ alert(addre)//这儿就可以使用这个值了 })