一直以为javascript中的同步与异步的的区别是这样的:
同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码
异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而可以继续在客户端做其它事情。今天在有IE的XML DOM对象时有如下代码:
var xmlobject;
function fillCellDate(){
var arrSignatures = ["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
"Microsoft.XmlDom"]; for(var i=0;i<arrSignatures.length;i++){
try{
xmlobject =new ActiveXObject(arrSignatures[i]);
}catch(e){
}
}
xmlobject.onreadystatechange=verify;
xmlobject.load("abc.xml");
alert("asynchronized!!!");
}function verify(){
if(xmlobject.readyState==4){
alert("call back function");
}
}按照自己的预期,由于是采用的异步方式,所以alert("asynchronized")会先出现,但是不管怎么测试该弹出框均是在最后出的,这和同步有什么区别呢,都是上面的代码执行完之后再执行alert("asynchronized"),恳请高手指点,谢谢!
同步:提交后等待服务器的响应,接收服务器返回的数据后再执行下面的代码
异步:与上面相反,提交后继续执行下面的代码,而在后台继续监听,服务器响应后有程序做相应处理,异步的操作好处是不必等待服务器而可以继续在客户端做其它事情。今天在有IE的XML DOM对象时有如下代码:
var xmlobject;
function fillCellDate(){
var arrSignatures = ["MSXML2.DOMDocument.5.0","MSXML2.DOMDocument.4.0",
"MSXML2.DOMDocument.3.0", "MSXML2.DOMDocument",
"Microsoft.XmlDom"]; for(var i=0;i<arrSignatures.length;i++){
try{
xmlobject =new ActiveXObject(arrSignatures[i]);
}catch(e){
}
}
xmlobject.onreadystatechange=verify;
xmlobject.load("abc.xml");
alert("asynchronized!!!");
}function verify(){
if(xmlobject.readyState==4){
alert("call back function");
}
}按照自己的预期,由于是采用的异步方式,所以alert("asynchronized")会先出现,但是不管怎么测试该弹出框均是在最后出的,这和同步有什么区别呢,都是上面的代码执行完之后再执行alert("asynchronized"),恳请高手指点,谢谢!
解决方案 »
- js显示DIV的问题
- 他妈的气死了--没有权限??
- 请问如何用js获取一个树(tree)中所有勾选中节点的ID?
- 今天没分了.但还是请大家帮忙一下.
- 将function声明在if语句中为什么火狐浏览器和其他浏览器解析却不一样
- 像MSN一样的消息提示问题:
- ie8下jQuery动画没有ie7流畅,是浏览器性能问题吗?有没有什么解决方法
- 各位大师,帮忙?
- 笨笨问题。
- $.datepicker is undefined 这是怎么回事儿呢?
- |zyciis| 如何来设置table中的td的宽,我用clientWidth FireFox提示:property that has only a gette
- ajax 读取聊天室 发现内存一直涨下去 ????
xmlobject.onreadystatechange=verify;
xmlobject.load("abc.xml");
alert("asynchronized!!!");
} function verify(){
if(xmlobject.readyState==4){
alert("call back function"); 你这段代码的意思就是当服务器处理好之后然后调用verify这个回调函数,当然这个alert会在服务器执行完才出来