promise

最新文章

JavaScript Async/Await和Promise的对比

从Node 8 LTS开始,Node完全支持Async/Await。这里通过示例的方式对比Async/Await和Promise。简单介绍下Async/Await:Async/Await是一种新的编写异步代码的方式。其他方式是回调或者Promise。Async/Await实质是构建在Promise之上,它不能用于纯的回调或者Node.js的回调中。和Promise一样,Async/Await是非阻

Promise基础

Promise定义Promise通常与异步操作相关联,本质上它是一个值的占位符。这个值可能是已知的,更通常的情况是一个异步操作的返回值。函数可以返回一个Promise,以此替代订阅一个事件或者传递一个回调函数给某个函数。如下:// fetch() promises to complete at some point in the future const promise = fetch("book

Promise的then()方法

所有的Promise对象都有then()方法,这个方法接受两个参数。第一个参数叫做promise fullfilled是调用的函数,也叫做fulfillment处理器;与异步操作的任何相关数据都可以传递给这个函数。第二个参数是当promise被reject的时候调用的函数,也叫做rejection handler;与fullfillment handler类似,与rejection相关的任何异步操

Promise的catch()方法和finally()方法

Promise的catch()Promise 还有一个 catch() 方法,当只传递一个rejection处理程序时,它的行为与 then() 相同。 例如,以下 catch() 和 then() 调用在功能上是等效的: const promise = fetch("books.json"); promise.catch(reason => { // rejection

构建新的(不确定)Promise

构建不确定Promise一般情况下使用Promise构造函数创建新的Promise。这个构造函数接受一个参数:一个称为 executor 的函数,它包含初始化 promise 的代码。执行器被传递了两个名为resolve() 和reject() 的函数作为参数。 当 executor 成功完成时调用 resolve() 函数表示 promise操作成果,或者调用 reject() 函数表示操作失败

构建确定的Promise

创建确定的Promise由于 Promise 执行器的动态特性,Promise 构造函数是创建不确定的 Promise 的最佳方式。但是如果你想要一个 Promise 来表示一个先前计算的值,那么创建一个简单地将值传递给 resolve() 或 reject() 函数的执行器是没有意义的。 相反,有两种方法可以在给定特定值的情况下创建已确定的 Promise。使用Promise.resolvePr

链式Promise——捕捉错误

Promise捕获错误在链式Promise中,允许捕捉在前一个Promise的fullfilment或者rejection handler中发生的错误,例如:const promise = Promise.resolve(42); promise.then(value => { throw new Error("Oops!"); }).catch(reason => { cons

链式Promise——finally

链式Promise使用finallypromise的finally方法的行为与then和catch方法截然不同,它将前一个promise的状态和值复制到其返回的promise中。这意味着原始Promise fullfiled返回一个值,那么finally将返回一个以相同值fullfiled的promise。const promise = Promise.resolve(42); promise.

链式Promise——返回值

链式Promise返回值Promise 链的另一个重要方面是能够将数据从一个 Promise 传递到下一个 Promise。您已经看到传递给执行器内部 resolve() 处理程序的值被传递给该 Promise 的fullfilment handler。您可以通过指定fullfilment handler的返回值来继续沿链传递数据。 例如:const promise = Promise.resol

链式Promise——返回Promise

Promise链返回Promise从 Promise 处理程序返回原始值允许在 Promise 之间传递数据,但是如果您返回一个对象呢?如果对象是一个promise,那么需要采取额外的步骤来确定如何执行。 考虑以下示例:const promise1 = Promise.resolve(42); const promise2 = Promise.resolve(43); promise1.then

Promise.allSettled()方法

Promise.allSettled()方法Promise.allSettled() 方法是 Promise.all() 的一个轻微变体,其中该方法等待直到指定迭代中的所有 Promise 都settled,无论它们是fulfilled还是rejected。Promise.allSettled() 的返回值始终是一个由结果对象数组实现的Promise。fulfilled promise的结果对象有

Promise.race()方法

Promise.race()方法Promise.race() 方法对监控多个 Promise 提供了一种稍微不同的方式。该方法也接受一个可迭代的Promise ,监控并返回一个 Promise,一旦第一个 Promise settled,返回的 Promise 就会settled。Promise.race() 方法不是像 Promise.all() 方法那样等待所有的 Promise 都被解决,或

BabelJS - 将 ES6 功能转换为 ES5

BabelJS - 将 ES6 功能转换为 ES5在本文以及接下来的文章中,我们将看到 ES6 中添加的特性。我们还将学习如何使用 BabelJS 将功能编译到 ES5。以下是我们将在本章中讨论的各种 ES6 特性Let + ConstArrow FunctionsClassesPromisesGeneratorsDestructuringIteratorsTemplate LiteralstEn