获得徽章 12
赞了这篇文章
赞了这篇文章
有时候我们需要将现有对象转为 Promise 对象,此时 Promise.resolve() 方法就起到这个作用。Promise.resolve()方法的参数分成四种情况,如果参数是 Promise 实例,那么Promise.resolve 将不做任何修改、原封不动地返回这个实例;如果参数是一个 thenable 对象,Promise.resolve() 方法会将这个对象转为 Promise 对象,然后就立即执行 thenable 对象的then()方法;如果参数不是具有then()方法的对象,或根本就不是对象, Promise.resolve() 方法返回一个新的 Promise 对象,状态为 resolved ;如果不带有任何参数,Promise.resolve()方法允许调用时不带参数,直接返回一个 resolved 状态的 Promise 对象;所以,希望得到一个 Promise 对象,比较方便的方法就是直接调用 Promise.resolve() 方法。
展开
评论
点赞
有时候,我们希望等到一组异步操作都结束了,不管每一个操作是成功还是失败,再进行下一步操作。为了解决这个问题,ES2020 引入了 Promise.allSettled() 方法,用来确定一组异步操作是否都结束了(不管成功或失败)。它的名字叫做 Settled ,包含了 fulfilled 和 rejected 两种情况。Promise.allSettled()方法接受一个数组作为参数,数组的每个成员都是一个 Promise 对象,并返回一个新的 Promise 对象。只有等到参数数组的所有 Promise 对象都发生状态变更(不管是fulfilled还是rejected),返回的 Promise 对象才会发生状态变更。
展开
评论
1
Promise有两个特点
1. 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 rejected 。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。
1. 对象的状态不受外界影响。Promise对象代表一个异步操作,有三种状态:pending(进行中)、fulfilled(已成功)和rejected(已失败)。只有异步操作的结果,可以决定当前是哪一种状态,任何其他操作都无法改变这个状态。
2.一旦状态改变,就不会再变,任何时候都可以得到这个结果。Promise对象的状态改变,只有两种可能:从 pending 变为 fulfilled 和从 pending 变为 rejected 。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,这时就称为 resolved(已定型)。
展开
评论
点赞