回调函数是同步还是异步_异步处理:回调函数与promise

本文探讨回调函数的同步与异步性质,强调异步操作仅在回调内部执行。介绍了回调地狱及其缺点,并详细阐述Promise如何解决这些问题,包括解决回调地狱的方式。接着,文章讲解了await关键字的应用,如何通过async函数避免回调,以及如何配合try...catch处理异常。

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

前置知识回调可以是同步也可以是异步,异步必须放在回调里执行,也就是对于一个异步任务只有回调函数里的才是异步的,比如:

<ul>
  <li class="one">one</li>
  <li class="two">two</li>
  <li class="three">three</li>
</ul>
<script>
    {
      let view = {
        el: 'ul',
        selector: null,
        init(){
          this.$el = $(this.el)
        }
      }
      let model = {
        
      }
      let controller = {
        init(view, model){
          this.view = view
          this.model = model
          this.view.init()
          this.bindEvent()
        },
        find(){
          return this.view.$el.find(this.selector)
        },
        bindEvent(){
          this.selector = '.one'
          this.find().on('click',(e)=>{
            console.log(this.selector)
          })
          this.selector = '.two'
        },
        
      }
      controller.init(view,model)
    }
  </script>

上面的事件监听是异步任务,但也只是它的回调里是异步的,所以this.find()的时候是同步的this.selector是'.one',而(e)=>{console.log(this.selector)}这个回调里才是异步代码,所以等页面中所有的同步代码完成后才去执行的,也就是这时候的this.selector是'.two',也就是点击one的时候打印出.two

回调

把一个函数A传给另一个函数B调用,那么A就是回调函数
1.具名回调写法

function 获取用户信息(fn){
    fn.call(undefined,'姓名:王立发')
}
function 用户信息(信息){
    console.log(信息)
}
获取用户信息.call(undefined,用户信息)
//姓名:王立发

2.匿名回调写法

function 获取用户信息(fn){
    fn.call(undefined,'姓名:王立发')
}

获取用户信息.call(undefined,function(信息){
    console.log(信息)
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值