关注
3-3应该主要考察Promise then的原理以及链式构造,以下是我的实现:
class U{
constructor () {
this.promise = null
}
applyPromise (fn) {
if(!this.promise) {
this.promise = new Promise((resolve)=>fn(resolve))
}else{
this.promise = this.promise.then(()=>new Promise((resolve)=>fn(resolve)))
}
}
timeout(time) {
this.applyPromise((resolve)=>setTimeout(()=>resolve(),time))
return this
}
print() {
this.applyPromise((resolve)=>{
console.log(...arguments)
resolve()
})
return this
}
}
let u = new U()
u.timeout(2000).print('haha').timeout(3000).print('jaja')
原理:通过函数构造以下结构
new Promise((resolve)=>{
console.log(1)
setTimeout(()=>resolve(),1000)
}).then(()=>{
console.log(2)
return new Promise((resolve)=>setTimeout(()=>resolve(),2000))
})
.then(async ()=>{
console.log(3)
return new Promise((resolve)=>setTimeout(()=>resolve(),3000))
})
查看原帖
点赞 1
相关推荐
投递格力等公司7个岗位 >
点赞 评论 收藏
分享
05-02 10:31
湘南学院 计算机类 点赞 评论 收藏
分享
投递蚂蚁集团等公司10个岗位 >
点赞 评论 收藏
分享
牛客热帖
正在热议
# 牛客帮帮团来啦!有问必答 #
1351990次浏览 18878人参与
# 如果可以选,你最想去哪家公司 #
564549次浏览 9411人参与
# 极具前瞻性,现代汽车编程题 #
11101次浏览 213人参与
# 和牛牛一起刷题打卡 #
48460次浏览 3732人参与
# 互联网公司评价 #
107910次浏览 1392人参与
# 非技术岗薪资爆料 #
55159次浏览 739人参与
# OPPO开奖 #
63039次浏览 953人参与
# 产品每日一题 #
3091次浏览 145人参与
# 晒一晒我的offer #
4058226次浏览 60585人参与
# 你会选择考研还是直接就业 #
91338次浏览 1068人参与
# 来聊聊你目前的求职进展 #
232176次浏览 2939人参与
# 实习必须要去大厂吗? #
26886次浏览 468人参与
# 春招你拿到offer了吗 #
421905次浏览 5969人参与
# 如果可以选,你最想从事什么工作 #
222948次浏览 3428人参与
# 硬件兄弟们 甩出你的华为奖状 #
38763次浏览 228人参与
# 现在还是0offer,延毕还是备考 #
433953次浏览 4983人参与
# 写简历别走弯路 #
362782次浏览 4577人参与
# 机械制造笔面经 #
18212次浏览 443人参与
# 关于提前批我想问 #
27738次浏览 582人参与
# 运营人的第一份offer应该如何选 #
42107次浏览 696人参与
# 软件开发2024笔面经 #
1577710次浏览 36143人参与
# 24届软开秋招面试经验大赏 #
1248504次浏览 18736人参与