异步回调与promise 基础

什么是异步什么是回调

同步和异步
如果可以直接拿到结果就是同步,不能直接拿到结果那就是异步。请着重体验过程的区别。
同步例子:
医院挂号,你拿到挂号单(等拿到号)你才能离开,必须要**拿到(结果)**才可以走。 排队等号
异步例子:
扫码排队等号吃饭, 拿到号 只要号叫到你了就可以吃饭,省去了(等)的过程 期间可以逛街什么的。 排队吃饭。

一定要会的promise
异步


    setTimeout(()=>{
        console.log('看看谁先运行了')
    })
    console.log(123123)

复制代码

什么是回调
我自己的函数不调用,让别人调用我的函数 就是回调

  function my () {
       console.log('my')
   }
//    no exist my() in window environment 
   function him(fn) {
       fn()
//  把my函数 传给him函数 调用
   }
   him(my)
复制代码

将上述代码简化,因为函数声明了一次仅仅调用了一次

//   let him=function him(){}
him(()=>{console.log('my')})
复制代码

回调与同步与异步的关系
回调不一定非要在异步里,只是异步操作通常需要回调操作。
同步回调例子

array.forEach(n=>console.log(n))
复制代码

区分同步还是异步
一般情况下的异步:

  1. ajax
  2. settimeout
  3. adeventlistener

什么时候使用promise 为什么使用promise

  1. 解决地狱回调的难题 可以使用链式调用.then()
  2. 可以进行捕获异常 .catch()
  3. 统一的规范处理
  4. 解决异步方法的统一方案

Promise mdn developer.mozilla.org/zh-CN/docs/…

return new Promise(reslove,reject)
复制代码

为什么要返回一个promise 可以将你的回调函数绑定在该Promise上
在本轮 事件循环 运行完成之前,回调函数是不会被调用的。

Promise.all()  Promise.race()
// 实际应用场景
复制代码

promise.all 应用场景

并发场景 多个请求结果合并在一起 一个渲染页面有多个请求。需求是多个请求都返回再一起再渲染。
不是并发请求,多个请求有多个loading all 只需设置一个。 具体表现再渲染页面的过程,提升用户体验。
juejin.cn/post/684490…
promise.race

请求超时提示
坐电梯刷着刷着 显示网络不佳

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享