异步和同步

什么是同步什么是异步

同步即是后一个任务等待前一个任务结束,然后再执行,程序的执行顺序与任务的排列顺序是一致的、同步的
异步即是
每一个任务有一个或多个回调函数(callback),前一个任务结束后,不是执行后一个任务,而是执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务的排列顺序是不一致的、异步的。

最基本的异步操作

先了解 setTimeout 和 setInterval
console.log( "张一" );
setTimeout(function() {
console.log( "王三" )
}, 500 );
setTimeout(function() {
console.log( "李四" )
}, 500 );
setTimeout(function() {
console.log( "刘五" )
}, 500 );
console.log( "李二" );
输出结果为张一李二王二 李四刘五
意思是setTimeout函数 不会 排队执行 而是 改变执行顺序,
我们写的回调函数 就是以 setTimeout函数 为基础

回调函数
function A(callback) {
callback();
console.log('我是主函数');
}
function B(){
setTimeout("console.log('我是回调函数')", 3000);//模仿耗时操作
}
A(B);
我是主函数
我是回调函数

上面的代码中,我们先定义了主函数和回调函数,然后再去调用主函数,将回调函数传进去。

定义主函数的时候,我们让代码先去执行callback()回调函数,但输出结果却是后输出回调函数的内容。这就说明了主函数不用等待回调函数执行完,可以接着执行自己的代码。所以一般回调函数都用在耗时操作上面。比如ajax请求,比如处理文件等。
XmlHttpRequest对象发起请求,设置回调函数用来处理XHR的readystatechnage事件。然后执行XHR的send方法。在XHR运行中,当其属性readyState改变时readystatechange事件就会被触发,只有在XHR从远端服务器接收响应结束时回调函数才会触发执行。也就是如下:
xmlhttp.open( "GET", "url", true );
xmlhttp.onreadystatechange = function( data ) {
if ( xmlhttp.readyState === 4 ) {
console.log( data );
}
};
xmlhttp.send( null );

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • OKHTTP异步和同步请求简单分析OKHTTP拦截器缓存策略CacheInterceptor的简单分析OKHTTP...
    未见哥哥阅读 35,512评论 6 27
  • 弄懂js异步 讲异步之前,我们必须掌握一个基础知识-event-loop。 我们知道JavaScript的一大特点...
    DCbryant阅读 7,666评论 0 5
  • HTML HTML5标签 媒体查询head部分写法 Doctype作用? 严格模式与混杂模式如何区分?它们有何意义...
    Mayo_阅读 3,868评论 0 8
  • jQuery中默认的Ajax调用方法是异步的,因此稍不注意就会出错。比如有一个例子,要求通过Ajax检查一个数是奇...
    小和和Saki阅读 5,244评论 0 5
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17