JS回调函数
事件驱动的异步实现方案也会使用回调函数,但这些回调函数都必须要有一个事件触发者的角色存在。
换句话说,必须要有人单击 Web 页面上的按钮或者向服务器发送 http 请求,我们事先注册的事件响应函数才会被调用;并且如果这个事件被反复触发,该函数也会反复被调用。
下面介绍一种会自动执行的一次性的异步实现方案。例如,如果我们想让程序延时一秒再调用一个函数,就可以这样写:
换言之,上述调用的作用就是在 1000 毫秒(即一秒)之后执行输出异步操作字符串的函数。
请注意,这里不需要任何人触发任何事件,只要过了指定的时间,回调函数就会被执行。
为了证明这里执行的是一个异步调用,我们接下来在异步操作中加入一些同步操作,然后看看它们的输出顺序:
同步操作_1
同步操作_2
同步操作_3
异步操作_2
异步操作_1
由以上结果可知,同步操作会在异步操作之前全部输出,并且由于异步操作 _2 设定的延时小于异步操作 _1,所以它也会被先执行。
换句话说,必须要有人单击 Web 页面上的按钮或者向服务器发送 http 请求,我们事先注册的事件响应函数才会被调用;并且如果这个事件被反复触发,该函数也会反复被调用。
下面介绍一种会自动执行的一次性的异步实现方案。例如,如果我们想让程序延时一秒再调用一个函数,就可以这样写:
setTimeout(function() { console.log('异步操作'); }, 1000);在这段代码中,我们给 setTimeout() 函数传递了两个实参。第一个实参是要延时执行的回调函数,第二个实参是要延长的具体时间,单位为毫秒。
换言之,上述调用的作用就是在 1000 毫秒(即一秒)之后执行输出异步操作字符串的函数。
请注意,这里不需要任何人触发任何事件,只要过了指定的时间,回调函数就会被执行。
为了证明这里执行的是一个异步调用,我们接下来在异步操作中加入一些同步操作,然后看看它们的输出顺序:
console.log('同步操作_1'); setTimeout(function() { console.log('异步操作_1'); }, 1000); console.log('同步操作_2'); setTimeout(function() { console.log('异步操作_2'); }, 500); console.log('同步操作_3');以上代码输出:
同步操作_1
同步操作_2
同步操作_3
异步操作_2
异步操作_1
由以上结果可知,同步操作会在异步操作之前全部输出,并且由于异步操作 _2 设定的延时小于异步操作 _1,所以它也会被先执行。
关注公众号「站长严长生」,在手机上阅读所有教程,随时随地都能学习。本公众号由站长亲自运营,长期更新,坚持原创,持续分享创业故事+学习历程+工作记录+生活日常+编程资料。
微信扫码关注公众号