前端面试题 - 手写一个Promise
问题一:同步与异步的区别?
JavaScript是单线程语言,同步会阻塞代码执行,异步不会阻塞代码执行。
补充:JavaScript是单线程语言,意味着只能同时做一件事。也就是说,发送请求遇到阻碍时,浏览器会卡住,卡住期间不能滚动、不能点击、不能有动画。异步是基于callback回调函数形式来调用的,每个异步都有回调函数。代码执行的顺序,先执行同步任务,再执行异步任务。
问题二:为什么使用Promise?
Promise解决了callback hell回调地狱的问题。 回调地狱即多层嵌套写法,难以辨识,不利于调试。Promise的优势:串联形式而非嵌套形式,仅一层。写法美观,可读性强,便于理解,便于调试。
问题三:手写一个Promise?
举例通过Promise函数加载图片。
let imgUrl1='https://aaa.com/000.jpg'
let imgUrl2='https://aaa.com/111.png'
// 定义图片加载的函数
function imgUpload(src) {
// 创建Promise实例,切记要return出去。
const p = new Promise(
// 回调函数,参数是两个函数,resolv