扫码关注官方订阅号
rt问题如上--最好麻烦贴一下代码
小伙看你根骨奇佳,潜力无限,来学PHP伐。
一个函数的作用是完成某一部分的任务,一个十分耗时的任务,可以让程序等待这个任务执行完成,获得返回值然后程序继续执行,这种叫做同步执行。也可让后台默默的先接收下这个任务,当前的程序继续往下执行,等后台执行完成这个任务,通过某种方式把处理结果发送给当前的程序,这种叫做异步执行。通信的方式可以是信号量,事件,回调,轮询等。比如一个 Ajax任务需要 10s 钟:
Ajax
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 里面也提供了很多同步的函数。
syncAjax
data
console.log('sync return !');
对于异步执行的asyncAjax,这一句立即执行完毕,所以会立即输出console.log('async return !'),可是由于Ajax 还没有完成,所以不能把ajax 的数据返回给当前执行的程序(因为系统还没有获得服务器发送回来的值)。等到服务器返回数据了,需要用某种方式通知当前的程序,回调函数就是一种。比如
asyncAjax
console.log('async return !')
function processData(data){} asyncAjax(URL,processData); console.log('async return !')
当后台获得Ajax的数据gdata,系统调用回调函数processData,其中第一个参数是服务器返回的数据data,这样当前的程序就可以通过processData处理 ajax 返回的数据了。
processData
var fn = function (callback) { callback('callback'); }; fn(function (value) { console.log(value); });
在JavaScript中,当一个函数A作为另外一个函数B的其中一个参数时,则函数A称为回调函数,即A可以在函数B的周期内执行常见应用ajax 返回函数。
函数的参数本身是一个函数那么我们就称之为回调函数(callback),比如setTimeout的第一个参数个人常用的两种场景:
setTimeout
异步回调 (操作需要网络请求等耗时的操作,操作完成后执行指定的函数)
//比如 $.get("http://api.xxxx.com/xxx",callback);
同步回调 (操作不耗时,但需要不同的处理方案)
function add(a, b, callback) { callback(a+b); } add(1,2,function(result) { console.log("result:" + result); }); add(1,2,function(result){ console.log("结果是:" + result); });
callback 英译汉的意思是回调
简单理解,callback就是方法里面套的一个方法,这个方法就是回调函数。nodejs 一般在调用一个方法的时候,把错误和结果放到回调函数里做处理
callback
eat(function(err,food){ if(err) { console.log(err); return; } //吃的噎着了,不能吃了 console.log(food); //吃的什么东西,味道还不错 })
我就想知道,这样的问题,明明可以通过看书或者百度得到比这里的99%的答题者提供的更为周到、详细、具体,通俗易懂的答案,为什么不先通过自己的努力看看能不能获取到想要的结果呢?
//回调函数:函数中的参数如果是另一个函数的话,那么这个作为参数的函数就是回调函数,可以在需要的时候在函数体内调用这个函数。 function a(callback){ //4、找到函数a(),执行。 //11、第二次执行函数a()。 console.log("我是parent函数a!"); //5、输出。 //12、输出。 console.log("调用回调函数"); //6、输出。 //13、输出。 callback(); //7、执行传递过来的函数b()。 //14、执行传递过来的函数c()。 } function b(){ //8、找到函数b() console.log("我是回调函数b"); //9、输出,完成函数a()回调函数b()的执行。 } function c(){ //15、找到函数c()。 console.log("我是回调函数c"); //16、输出。 } function test(){ //2、找到函数test(),执行函数。 a(b); //3、执行函数a(b)。 a(c); //10、执行函数a(c)。 } test(); //1、执行函数test()。
/*输出顺序:我是parent函数a!调用回调函数我是回调函数b我是parent函数a!调用回调函数我是回调函数c*/这是我之前看到的一个例子,然后我把顺序撸了一遍并注释。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
一个函数的作用是完成某一部分的任务,
一个十分耗时的任务,可以让程序等待这个任务执行完成,获得返回值然后程序继续执行,这种叫做同步执行。也可让后台默默的先接收下这个任务,当前的程序继续往下执行,等后台执行完成这个任务,通过某种方式把处理结果发送给当前的程序,这种叫做异步执行。通信的方式可以是信号量,事件,回调,轮询等。比如一个
Ajax任务需要 10s 钟:同步的方式执行
syncAjax直到 10s 之后这句才会执行完成,把 Ajax 的数据赋值给data。所以10s 之后才会执行console.log('sync return !');。这种方式在 JS 不太好,因为JS是单线程,一直在这里等待 10s ,那么将会后很长时间整个浏览器没有响应,所以不可取。当然 nodejs 里面也提供了很多同步的函数。对于异步执行的
asyncAjax,这一句立即执行完毕,所以会立即输出console.log('async return !'),可是由于Ajax 还没有完成,所以不能把ajax 的数据返回给当前执行的程序(因为系统还没有获得服务器发送回来的值)。等到服务器返回数据了,需要用某种方式通知当前的程序,回调函数就是一种。比如当后台获得Ajax的数据g
data,系统调用回调函数processData,其中第一个参数是服务器返回的数据data,这样当前的程序就可以通过processData处理 ajax 返回的数据了。在JavaScript中,当一个函数A作为另外一个函数B的其中一个参数时,则函数A称为回调函数,即A可以在函数B的周期内执行
常见应用ajax 返回函数。
函数的参数本身是一个函数那么我们就称之为回调函数(callback),比如
setTimeout的第一个参数个人常用的两种场景:
异步回调 (操作需要网络请求等耗时的操作,操作完成后执行指定的函数)
同步回调 (操作不耗时,但需要不同的处理方案)
callback 英译汉的意思是回调
简单理解,
callback就是方法里面套的一个方法,这个方法就是回调函数。nodejs 一般在调用一个方法的时候,把错误和结果放到回调函数里做处理
我就想知道,这样的问题,明明可以通过看书或者百度得到比这里的99%的答题者提供的更为周到、详细、具体,通俗易懂的答案,为什么不先通过自己的努力看看能不能获取到想要的结果呢?
/*输出顺序:
我是parent函数a!
调用回调函数
我是回调函数b
我是parent函数a!
调用回调函数
我是回调函数c
*/
这是我之前看到的一个例子,然后我把顺序撸了一遍并注释。