[JavaScript初级面试]5. JS基础-异步

题目

  • 同步和异步的区别是什么?
  • 手写用Promise加载一张图片
  • 前端使用异步的场景哪些?
  • setTimeout执行顺序

单线程

JS是单线程语言,只能同时做一件事儿;
JS和DOM渲染共用同一个线程,因为JS可修改DOM;
浏览器和nodejs已经支持JS启动进程,如web worker

单线程弊端

遇到等待(网络请求,定时任务)会暂停执行,用户界面无响应;

解决单线程弊端的方式:

采用异步执行方式,以回调callback函数的形式

// 同步方式:
console.log(100);
alert(200); // 同步执行,阻塞代码执行
console.log(300);
// 异步方式:
console.log(100);
setTimeout(() => {// callback函数异步调用,不会阻塞代码执行
  console.log(200);
});
console.log(300);

异步的应用场景

  • 网络请求,如ajax图片加载
  • 定时任务,如setTimeout

异步带来的问题

callback hell : 回调函数里面继续调用了回调函数

解决异步带来的callback hell问题

使用Promise

[JavaScript初级面试]5. JS基础-异步

上一篇:Java-打印ASCII码表


下一篇:Java类型转换