alert("hellow")
this.NextStep=function(){
alert("NextStep")
}
}
我们可以这样调用 var myTest=new Test()myTest.NextStep()我们做暂停的时候可以吧一个函数分为两部分,暂停操作前的不变,把要在暂停后执行的代码放在this.NextStep中。
为了控制暂停和继续,我们需要编写两个函数来分别实现暂停和继续功能。
暂停函数如下: */function Pause(obj, iMinSecond) {if (window.eventList == null)
window.eventList = new Array() var ind = -1 for ( var i = 0i <window.eventList.lengthi++) {if (window.eventList[i] == null) {
window.eventList[i] = obj
ind = i break
}
}if (ind == -1) {
ind = window.eventList.length
window.eventList[ind] = obj
}
setTimeout("GoOn(" + ind + ")", iMinSecond)
}/*
* 该函数把要暂停的函数放到数组window.eventList里,同时通过setTimeout来调用继续函数。 继续函数如下: */function GoOn(ind) {var obj = window.eventList[ind]
window.eventList[ind] = null if (obj.NextStep)
obj.NextStep() else
obj()
}/*
* 该函数调用被暂停的函数的NextStep方法,如果没有这个方法则重新调用该函数。 函数编写完毕,我们可以作如下册是: */function Test() {
alert("hellow")
Pause(this, 3000)// 调用暂停函数
this.NextStep=function(){
alert("NextStep")
}
}
Test()
异步执行的函数需要使用回调来获取返回值你那种想等待回调函数执行后再把结果作为返回值的想法是无法实现,并且是极不可取的因为你并不知道需要多久该回调函数才能执行,让主线程阻塞在这儿等待不是一个正确的做法。
正确的做法还是在回调函数中获得值进行处理推荐写法:
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)//这儿就可以使用这个值了 })
通过面向对象实现,一个函数具有 run()、stop() 两个方法,以及一个status属性,默认status为true,而run()方法内部则一开始就判断 status。
如果为true则执行,如果为false则return。而当执行stop()的时候,目的就是把status属性改为false,这样run()方法就停止掉了,js的面向对象要注意作用域和闭包的用法。
setInterval和clearInterval这两个函数可以实现,一个是多少毫秒执行一次,一个是停止setInterval中的函数。
扩展资料:
注意事项:
1、在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收。
2、参数列表中变量的个数根据实际传递的数据的多少来确定。
3、一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据,在开发中往往根据需求来设计函数需不需要返回值。
4、函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成。
参考资料来源:百度百科-函数
参考资料来源:百度百科-javascript
参考资料来源:百度百科-停止
参考资料来源:百度百科-触发