js中的callback是什么, 有什么作用呢?

时间:2021-09-14 11:10:00 类型:JS/JQUERY
字号:    

  一个函数的作用是完成某一部分的任务,

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

var data = syncAjax(URL); // 同步Ajax
console.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的数据data,系统调用回调函数processData,其中第一个参数是服务器返回的数据data,这样当前的程序就可以通过processData处理 ajax 返回的数据了。


注意: 这里的processData做为asnycAjax的参数, 那么 processData就是回调函数

<