js中的callback(阻塞同步或异步时使用)

1、回调就是一个函数的调用过程,函数a有一个参数,这个参数是个函数b,当函数a执行完以后执行函数b,

那么这个过程就叫回调

eg.

function a(callback){
   alert(‘parent‘);
   alert(‘callback‘);
   callback();
}
function b(){
   alert(‘b‘);
}
a(b);

运行结果:

parent

callback

b

2、回调什么时候执行

回调函数一般在同步情境下是最后执行的,在异步情况下是有可能不执行的,因为事件没有被触发或者

条件不满足

3、回调函数使用的场合

(1)资源加载:动态加载js文件后执行回调,加载iframe后执行回调,ajax操作回调,图片加载完成

执行回调等等

(2)DOM事件及Node.js事件基于回调机制

(3)setTimeout的延迟时间为0,这个hack经常被用到,setTimeout调用的函数其实就是一个callback

的体现

(4)链式调用

时间: 2024-10-18 14:06:01

js中的callback(阻塞同步或异步时使用)的相关文章

Node.js 回调函数 1) 阻塞 ,同步 2) 非阻塞 ,异步.

1.阻塞. 同步. 1) 读取的文件: input.txt 菜鸟教程官网地址:www.runoob.com 2) main.js 1 var fs = require("fs"); 2 3 //同步读取, 阻塞代码,按顺序执行的 4 var data = fs.readFileSync('input.txt'); 5 6 console.log(data); 7 console.log(data.toString()); 8 console.log("程序执行结束!"

如何理解阻塞和非阻塞同步和异步

1.同步与异步 同步和异步关注的是消息通信机制,所谓同步,就是在发出一个调用时,在没有得到结果之前,该调用就不返回.但是一旦调用返回,就得到返回值了.换句话说,就是由调用者主动等待这个调用的结果. 而异步则是相反,调用在发出之后,这个调用就直接返回了,所以没有返回结果.换句话说,当一个异步过程调用发出后,调用者不会立刻得到结果,而是在调用发出后,被调用者通过状态,通知机制来通知调用者,或通过回调函数处理这个调用. 举例: 你打电话问书店老板有没有<分布式系统>这本书,如果是同步通信机制,书店老

springMVC框架在js中使用window.location.href请求url时IE不兼容问题解决

是使用springMVC框架时,有时候需要在js中使用window.location.href来请求url,比如下面的路径: window.location.href = 'forecast/download.do' 在谷歌浏览器下,实际请求的路径是:项目名/forecast/download.do 而在IE下访问时在中间多了好几层文件夹: 造成这种情况的原因是各种浏览器在使用window.localtion.href请求相对路径时处理方法不同 IE是从当前当前路径开始跳转 谷歌是从根目录开始跳

阻塞与非阻塞 同步与异步

如果你想吃一份宫保鸡丁盖饭:     同步阻塞:你到饭馆点餐,然后在那等着,还要一边喊:好了没啊!     同步非阻塞:在饭馆点完餐,就去遛狗了.不过溜一会儿,就回饭馆喊一声:好了没啊!     异步阻塞:遛狗的时候,接到饭馆电话,说饭做好了,让您亲自去拿.         异步非阻塞:饭馆打电话说,我们知道您的位置,一会给你送过来,安心遛狗就可以了. 一个IO操作其实分成了两个步骤:发起IO请求和实际的IO操作.     同步IO和异步IO的区别就在于第二个步骤是否阻塞,如果实际的IO读写阻塞

日期控件的点击事件,在js中添加callback属性,不在html中直接添加

总结如下: 1. callback的data是点击事件(事件控件)完成后的回调的日期 2. return true后才能改变值,return false不能改变值 3. \ 是转义,因为在""中不能直接下一行 4. ""里面必须都是'' 5. ''里面必须都是"" 6. 最后还要加上重新注册,是parent()下的重新注册 example: //点击开始日期触发请假天数改变 $('#leave_startTime').attr("cal

在js中获取页面元素的属性值时,弱类型导致的诡异事件踩坑记录,

前几天写一个js的时候遇到一个非常诡异的事情,这个问题是这样的,我要获取一个页面的DOM元素的val值,判断这个值是否比某个变量大,这个需求原先数字最大也就是10,现在要改了,可能会更多,这个时候我发现比较大小的判断就出了问题: 代码粘出来: 1 // js弱类型导致的诡异现象,11 > 9 false 2 function downtest(id){// 现象是当val取到的元素val值是11的时候,11>9结果是false 3 // 当前点击下一题的是第几题, 4 var val=$(&q

IO中同步、异步与阻塞、非阻塞的区别(转)

转自:http://blog.chinaunix.net/uid-26000296-id-3754118.html 一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 SendMessage.该函数发送一个消息给某个窗

IO中同步、异步与阻塞、非阻塞的区别

一.同步与异步同步/异步, 它们是消息的通知机制 1. 概念解释A. 同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回. 按照这个定义,其实绝大多数函数都是同步调用(例如sin isdigit等).但是一般而言,我们在说同步.异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务.最常见的例子就是 SendMessage.该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回.当对方处理完毕以后,该函数才把消息处理函数所返回的值返回给调用者. B.

关于同步,异步,阻塞与非阻塞的一些认识

当你们在说同步,异步,阻塞,非阻塞的时候到底在说什么? 一个术语的描述应该有一个目标对象吧 那些说同步,异步的家伙,从来不说这个目标对象是谁,在程序的运行过程中,有很多参与者,到底这个同步,异步用来描述谁的呢? 关于同步与异步的讨论,知乎上有人解释http://www.zhihu.com/question/19732473 个人理解,同步与异步描述的是一种行为方式,阻塞与非阻塞描述的是一种状态. 在js中,我们说同步,是说同步调用,举个栗子: function A(){ B(); C(); }