为了账号安全,请及时绑定邮箱和手机立即绑定

js的callback到底是什么。有什么实际应用。

js的callback到底是什么。有什么实际应用。

慕妹3146593 2018-10-04 13:18:33
rt问题如上--最好麻烦贴一下代码
查看完整描述

1 回答

?
跃然一笑

TA贡献1826条经验 获得超6个赞

一个函数的作用是完成某一部分的任务,
一个十分耗时的任务,可以让程序等待这个任务执行完成,获得返回值然后程序继续执行,这种叫做同步执行。也可让后台默默的先接收下这个任务,当前的程序继续往下执行,等后台执行完成这个任务,通过某种方式把处理结果发送给当前的程序,这种叫做异步执行。通信的方式可以是信号量,事件,回调,轮询等。比如一个 Ajax任务需要 10s 钟:

var data = syncAjax(URL); // 同步Ajaxconsole.log('sync return !');

asyncAjax(URL/*其他必要的参数,暂略*/);console.log('async return !')

同步的方式执行syncAjax 直到 10s 之后这句才会执行完成,把 Ajax 的数据赋值给data。所以10s 之后才会执行 console.log('sync return !');。这种方式在 JS 不太好,因为JS是单线程,一直在这里等待 10s ,那么将会后很长时间整个浏览器没有响应,所以不可取。当然 nodejs 里面也提供了很多同步的函数。

对于异步执行的asyncAjax,这一句立即执行完毕,所以会立即输出console.log('async return !'),可是由于Ajax 还没有完成,所以不能把ajax 的数据返回给当前执行的程序(因为系统还没有获得服务器发送回来的值)。等到服务器返回数据了,需要用某种方式通知当前的程序,回调函数就是一种。比如

function processData(data){}
asyncAjax(URL,processData);
console.log('async return !')

当后台获得Ajax的数据gdata,系统调用回调函数processData,其中第一个参数是服务器返回的数据data,这样当前的程序就可以通过processData处理 ajax 返回的数据了。


查看完整回答
反对 回复 2018-11-26
  • 1 回答
  • 0 关注
  • 841 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号