什么是异步什么是回调
同步和异步
如果可以直接拿到结果就是同步,不能直接拿到结果那就是异步。请着重体验过程的区别。
同步例子:
医院挂号,你拿到挂号单(等拿到号)你才能离开,必须要**拿到(结果)**才可以走。 排队等号
异步例子:
扫码排队等号吃饭, 拿到号 只要号叫到你了就可以吃饭,省去了(等)的过程 期间可以逛街什么的。 排队吃饭。
一定要会的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))
复制代码
区分同步还是异步
一般情况下的异步:
- ajax
- settimeout
- adeventlistener
什么时候使用promise 为什么使用promise
- 解决地狱回调的难题 可以使用链式调用.then()
- 可以进行捕获异常 .catch()
- 统一的规范处理
- 解决异步方法的统一方案
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