回调地狱(callback)和promise以及将setTimeout封装成promise

Callback与Promise,将setTimeout封装成Promise

  • 为什么回调地狱(Callback hell)会发生?
  • Promise披着怎样的面纱?

首先Promise的出现,是为了将困在Callback hell中的芸芸众生解救出来,相信回调地狱是JavaScript开发人员最头疼的问题之一吧!尤其在接手前人的代码时,打开看到满满的Callback嵌套,是不是很想递出辞职信;那么Promise是如何解救痛苦中的芸芸众生的呢!

目录

1.回调函数的顺序与回调地狱

2.定时器

3.网络请求

4.Promise

5.sleep函数

回调函数的顺序与回调地狱

我们那火影举例(相信在座的大部分都看过):如果你是卡卡西的话,当敌人太多时就要开写轮眼、写轮眼打开后,快嗝屁之前要使用千鸟、千鸟用完之后必须注意影分身;

下面用伪代码表示就是:

卡卡西.addEventListener('敌人太多', function(){
   
  卡卡西.addEventListener('快嗝屁了',function(){
   
    写轮眼();
    卡卡西.addEventListener('写轮眼开完了',function(){
   
      跑路();
    })
  })
})

以上的举例就是常见的回调地狱了(Callback hell),这也是很多人在办公室处理的事情太多的时候,常常会做到,不知道自己在做什么的原因。

为了不过度嵌套太多的注册事件、回调函数,后来开发者想到了各种的pattern,最后promise被纳入了ES6的标准里;

定时器

定时器是JavaScript中一个很常见的方法,而它的语法和前面的注册事件相当相似

var timeoutID = scope.setTimeout(code[, delay]);

第一个参数正是上面说到的回调函数(Callback),第二个参数则是微秒数;

举一个例子:

假设你的室友是一个很喜欢同时操作很多个session的肥宅,有一天这位肥宅和你说:“诶,十分钟后帮我开一下电脑,我要连回去,拜托!”

setTimeout(() => 开电脑, 10*60*1000)

内置的定时器会在十分钟之后去触发这个事件;

注意:clearSetTimeout(timerId)可以把定时器事件停止</

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值