ECMAScript 6入门 学习笔记

    xiaoxiao2021-03-25  167

    1.Promise介绍

    Promise是抽象异步处理对象以及对其进行各种操作的组件

    使用new Promise实例化的promise对象有三个状态,“has-resolution”成功时,“has-rejection”失败时,“unresolved”也就是promise对象刚被创建后的初始化状态

    promise.resolve作为new Promise()的快捷方式,在进行Promise对象的初始化或者编写测试代码的时候非常方便

    具有then方法的对象是thenable,可以使用Promise.resolve()将 thenable转换为一个promise对象

    2.(1)绝对不能对异步回调函数(即使在数据已经就绪)进行同步调用

        (2)如果对异步函数进行同步调用的话,处理顺序可能会与预期不符,可能会带来意料之外的后果

        (3)对一部回调函数进行同步调用,还可能导致栈溢出或异常处理混乱等问题

        (4)如果想在将来某一时刻调用异步回调函数的话,可以使用setTimeout等异步API

    3.Promise#then 不仅仅是注册一个回调函数那么简单,他还会将回调函数的返回值进行变换,创建并返回一个promise对象

    4.Promise.all(promise对象数组).then(fn)这时候会将所有的Promisedui对象组成一个数组,在所有的通信完成之后(变为fulfilled或rejected状态之后),才会调用.then方法。

    传递给Promise.all()的Promise数组是同时开始执行的。

    4.Promise.race(promise对象数组).then(fn)这时候会将所有的Promisedui对象组成一个数组,在其中任何一个Promise对象的通信完成之后(变为fulfilled或rejected状态之后),才会调用.then方法。 传递给Promise.race()的Promise数组是同时开始执行的。

    5.使用promise.then(onFulfilled, onRejected) 的话 在 onFulfilled 中发生异常的话,在 onRejected 中是捕获不到这个异常的。

    6.在 promise.then(onFulfilled).catch(onRejected) 的情况下 then 中产生的异常能在 .catch 中捕获

    7.我们使用 .then 也能完成同样的工作。只不过使用 .catch 的话意图更明确,更容易理解。 Promise.resolve(42).then(throwError).then(null, onRejected);

    转载请注明原文地址: https://ju.6miu.com/read-4639.html

    最新回复(0)