同步:
只有当前代码执行完了,才能继续向下执行。
异步:
当前代码的执行不会阻塞后续代码的执行。
最常见的异步是:定时器。
异步代码需要等待同步代码都执行完后再执行。
console.log(1);
setTimeout(()=>{
console.log(2);
},0) //延时器最后才会执行 其他两个为同步代码
console.log(3);
//1 3 2
console.time("计时");
setTimeout(()=>{
console.log(1);
console.timeEnd("计时");
},1000);
for(var i = 0; i < 100000; i++){
}
//1
// 计时: 1001.19775390625 ms
异步返回值
常见的异步操作:
1.数据库操作
2.文件操作
3.定时器
4.AJAX
异步返回值问题:
同步代码可以直接从返回值中拿到结果,但是异步不行。
function getMsg(){
let msg = "";
setTimeout(()=>{
//1s后获取到了数据
msg = "鸡汤来了";
},1000)
return msg;
}
//得到结果
let result = getMsg();
console.log(result); // 对结果进行处理
解决办法
//解决办法 回调函数
function getMsg(callBack){
let msg = "";
setTimeout(()=>{
//1s后获取数据
msg = "鸡汤来了";
//吧结果处理写在这里
callBack(msg);
},1000)
}
//小王调用 控制台输出
getMsg(data=>{
console.log(data);
})
//小黄调用 弹出窗口
getMsg(data=>{
alert(data)
})