JS中的异步和回调

什么是异步

异步(Asynchronous,即AJAX中的第一个A),是一种代码执行的顺序,与之相对应的是同步

JS中的同步执行意味着代码是按照从上到下的书写顺序执行,相对的,异步执行就是改变代码顺序的执行

JS中最常见的异步代码是setTimeout和setInterval,用一段例子来说明

console.log( "1" );
setTimeout(()=>console.log( "2" ), 0 );
setTimeout(()=>console.log( "3" ), 0 );
setTimeout(()=>console.log( "4" ), 0 );
console.log( "5" );

得到的结果是1,5,2,3,4。

可以看到,就算我们将执行时间设置成0秒,setTimeout函数依然会等所有代码执行完后再执行,是因为当setTimeout函数执行时,代码不会立即生效,而是进入一个先进先出的任务栈,当所有代码执行完毕后,再依次执行任务栈中的代码。

什么是回调

一句话解释回调,即“让函数有秩序的执行”。
根据上面所提到的异步的概念可以得知, 在JS中,有一部分异步函数会改变代码执行顺序,那如何将异步函数变成同步函数呢,我们可以通过回调(callback)来处理此类问题问题
举例说明:

setTimeout(()=>console.log( "1" ), 0 );
console.log( "2" );
//输出结果为,2,1

那么我们回调函数来改写例子

function print(fn){
	console.log( "1" )
	fn();
}
function fn(){
	console.log( "2" )
}
setTimeout(print(fn), 0 );
//输出结果为,1,2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值