1. 同步回调函数
立即执行, 完全执行完了才继续往后执行, 不会放入回调队列中
例如:
- 数组遍历相关的回调函数
- Promise的excutor函数(在使用
new Promise()
创建一个新对象的时候,传递给Promise构造函数的那个函数参数)
//代码演示
let arr = [1,2,3];
arr.forEach(function (item) {
//遍历回调,该同步回调函数不会放入列队,一上来就要执行完
console.log(item);
})
console.log('forEach()之后');
输出结果:
2. 异步回调函数
不会立即执行, 会放入回调队列中等待将来执行
例如:
- 定时器回调
- ajax回调
- Promise的成功或失败的回调
//代码演示
setTimeout(function () {
//该异步回调函数,会放在队列中
console.log('setTimeout()正在执行');
},0);
console.log('setTimeout()之后');
//结果:先输出“setTimeout()之后”,最后输出“setTimeout()正在执行”