前端面试之问到promise怎么办?

本文深入探讨Promise在前端面试中的重要性,包括基本用法、手动实现Promise/A+以及使用中应注意的陷阱。重点讲解如何避免回调地狱,正确使用Promise.all,并提醒面试者不要盲目追求代码简洁而忽视业务需求。同时,分享了实际项目中遇到的问题及解决方案,为面试准备提供实战指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Promise作为面试中的经典考题,我们一定要深刻学习和理解它! Promise有什么用呢?答:我们拿它解决异步回调问题。Pomise是ES6里面新增的一种异步编程的解决方案。现在这个promise在面试中感觉就像“css清除浮动”一样,属于答不上来就会挂掉的前端基础知识了。

本文大纲:

1.promise基本用法;

2.promise A+手动实现

3.promise 使用中的哪些坑 promise.all 回调地狱等;

(一)promise基本用法

promise对象简单的来说,有点类似于ajax,它可以看做是一个装有某个未来才会结束的事件的容器。它有两个特点:1,promise的状态不受外部影响;2.promise的状态一旦改变,就不会再变了。

可以先看下promise的结构

function Promise(executor){

var self = this

self.status = 'pending' // Promise当前的状态

self.data = undefined // Promise的值

self.onResolvedCallback = [] // Promise resolve时的回调函数集,因为在Promise结束之前有可能有多个回调添加到它上面

self.onRejectedCallback = [] // Promise reject时的回调函数集,因为在Promise结束之前有可能有多个回调添加到它上面

executor(resolve, reject) // 执行executor并传入相应的参数

}

promise的结构简单来说就是,它有个status表示三种状态**,pending(挂起),resolve(完成),reject(拒绝)。除此之外,它还有两个回调方法onResolvedCallback** 和 onRejectedCallback,分别对应resolve(完成) 和reject(拒绝)。

假如前面面试官问你promise的概念和基本用法,你像我一样提到了ajax的话,面试官很可能就会顺口问一下ajax(毕竟也是前端应该掌握得基础知识之一)。根据我的经验来看,一线大厂的面试官这个时候很可能会要你用promise撸一个ajax出来,一来可以考察你promise和ajax掌握得怎么样,二来可以考察你的代码能力。

1.1用promise来实现Ajax

const $ = (function(){

const ajax = function(url, async = false, type = 'GET'){

const promise = new Promise(function(resolve, reject){

const handler = function(){

if(this.read
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值