站点介绍
标签 前端 下的文章
一名小码农的日常,学习&生活
发布于2024-07-04
await细节解析
async函数另外一个特殊之处就是可以在内部使用await关键字,而普通函数中是不可以的。
async详细解析
async是`asynchronous`单词的缩写,异步非同步的意思。async是`synchronous`单词的缩写,意思是同步同时。
Generator方案的重构
目前我们的写法有两个问题:第一就是我们不能确定需要调用几层的`Promise`关系。第二,如果还有其他需要这样执行的函数,我们应该如何操作?
generator+promist:用同步的形式编写异步代码
我们来看看如何使用generator+promist来实现同步的形式编写异步代码
Generator的使用--参数
生成器函数的参数如何获取和使用呢?下面代码来解答。
Generator代码使用-返回值
通过看上面代码,并不是我们每用一次都要手动写一行代码这样看上去代码太冗余了,我们发现想可以将获取的返回值的代码优化,于是有了下面优化后的代码。
异步编程方案三-《Generator方案》
生成器是ES6中新增的一种函数控制使用的方案,它可以让我们更加灵活地控制函数什么时候继续执行,暂停执行等。平时我们会编写很多的函数,这些函数终止的条件是什么呢?
异步编程方案二-《Promise方案》
我们来看一下Promise的API是怎么样的?Promise是一个类,可以翻译成承诺,许诺,期约。当我们需要的时候,给予调用者一个承诺返回
什么是回调地狱?
回调函数这样的方法容易产生回调地狱,这种嵌套的结构肯能在简单的情况下还能勉强接受但是随着异步操作的复杂化,代码的可读性会大幅下降。
在什么情况下会选择使用WeakMap而不是Map?
WeakMap管理target原对象:WeakMap的键`target`是我们原始的对象,比如Vue组件中的数据对象。当一个组件不再使用时,它的相应数据`原对象`也会被销毁。如果我们使用的是Map,由于Map对键值是强作用的,这些原对象将不被垃圾回收,从而导致内存泄漏。
异步编程方案一《回调函数》
回调函数是早期处理异步编程的主要方式,虽然它本身存在很多缺陷比如哪个时候对复杂的异步处理常常会`出现回调地狱`。但是因为Javascript中当时并没有很好的API来帮助我们以比较优雅的方式编写代码,所以依然应用非常广泛。
Map和WeakMap有什么不同?解释WeakMap的特性
Map是一种键值对集合,可以**使用任何类型的值为键**,包括对象和基本类型。WeakMap也是一种键值对,但它的`键必须是对象`,不能是基本类型,WeakMap中的键是弱引用的,也就是说,如果没有其他引用指向该对象,那么即使这个对象是WeakMap的键,**它也会被垃圾回收机制回收**。
比较Proxy和Object.defineProperty之间的区别?
Object.defineProperty在设计时并不是为了做数据监听而创建的,他的设计目的主要是为了提供对象属性的精细控制。Object.defineProperty允许我们详细地定义或修改对象的属性描述符,包括属性的可写性writable,可枚举型enumerable,可配置性configurable等。通过这些描述符,我们可以对对象的属性行为进行更细的控制。
解释Javascript中的Proxy对象是什么以及它是如何工作的,用于哪些场景?
Proxy是ES6引入的一种新特性,运行我们创建一个代理对象来拦截并定制对另一个对象的基本操作,比如获取数据,设置数组,删除数据等。
Reflect在代码中的具体使用场景是怎样的?
在早期的ECMA规范中没有考虑到这种对`对象本身`的操作`如何设计会更规范`,所以将这些API放在了Object上。但是Object作为一个构造函数,这些操作实际上放到它身上并不合适。