怎么通过js 事件,停掉当前正在运行的js函数,不是在正在运行的函数中停止,是在另外一个事件中停止

JavaScript015

怎么通过js 事件,停掉当前正在运行的js函数,不是在正在运行的函数中停止,是在另外一个事件中停止,第1张

1、新建一个html文件,命名为test.html。

2、在test.html文件内,在p标签内,使用input标签创建两个数字输入框,并分别设置其id为num1,num2,主要用于下面通过该id获得input对象。

3、在test.html文件内,使用button标签创建一个按钮,按钮名称为“相加”。

4、在test.html文件中,给button按钮绑定onclick点击事件,当按钮被点击时,执行numsum()函数。

5、在js标签中,创建一个名称为jia()的函数,它的参数分别为a和b,在函数内,通过return返回a参数与b参数相加后的值。

6、在js标签中,再创建一个numsum()函数,在函数内,使用getElementById()通过id获得input对象,并使用value属性获得输入的数字,然后调用jia()函数,并将num1和num2两个值传递给jia()函数进行相加,最后,使用alert()方法输出相加的结果。

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

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

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)//这儿就可以使用这个值了 })

js并没有php那种sleep函数,不过我们可以做个延时函数

function sleep(func,time){

setTimeout(typeof func==='function'&&func(),time)

}

调用sleep(function(){alert(1)},1000),来让js脚本延时1秒后弹出1