这是我参与「第四届青训营 」笔记创作活动的第11天
Promise
ES6将Promise写进了语法标准,提供了Promise对象. Promise相当于一个容器,保存着某个未来才会结束的事件,(通常是一个异步操作). Promise有以下两个特点: 1.对象的状态不受外界的影响. 2.一旦状态改变,就不会再变化,任何时候都可以得到这个结果.
Promise基本用法
const promise = new Promise(function(resolve, reject) {
// ... some code
if (/* 异步操作成功 */){
resolve(value);
} else {
reject(error);
}
});
resolve的作用是将Promise对象从未完成变为成功. reject的作用是将Promise对象从未完成变为失败.
then()
Promise生成以后可以用then接受两个回调函数作为参数.
function timeout(ms) {
return new Promise((resolve, reject) => {
setTimeout(resolve, ms, 'done');
});
}
timeout(100).then((value) => {
console.log(value);
});
then返回的是一个新的Promise的实例,因此可以用链式写法.
catch()
用于指定发生错误时的回调函数.
finaly()
是不管Promise对象最后的状态如何,都会指向的操作.
all()
用于将多个 Promise 实例,包装成一个新的 Promise 实例。
race()
将多个Promise实例包装成一个新的实例.
allSettled()
有时候,我们希望等到一组异步操作都结束了,不管每一个操作是成功还是失败,再进行下一步操作。但是,现有的 Promise 方法很难实现这个要求。 all()方法只适合所有异步操作都成功的情况,如果有一个操作失败,就无法满足要求。 于是便引入了allSettled()方法来确定一组异步操作是否都结束了.
any()
接受一组Promise实例作为参数,包装成一个新的Promise返回.
resolve()
可以将现有的对象转为Promise对象.
reject()
该方法也会返回一个Promise实例,状态为rejected.
try()
Iterator(遍历器)
遍历器是一种接口,为不同的数据结构提供统一的访问机制,只要有Iterator接口,就可以完成遍历的操作. 遍历器的遍历过程:
- 创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象。
- 第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员。
- 不断调用指针对象的next方法,直到它指向数据结构的结束位置。
遍历器对象的return()
return()在for of 循环提前退出的时候调用,清理或者释放资源.