Promises

ECMAScript 6 Promises(下):谈谈 API(一)

我怕爱的太早我们不能终老 提交于 2020-05-03 21:20:11
原文地址: http://www.2ality.com/2014/10/es6-promises-api.html 原文作者:Dr. Axel Rauschmayer 译者:倪颖峰 原博客已经标明:本博客文档已经过时,可进一步阅读“Exploring ES6”中的 “ Promises for asynchronous programming ”。仔细对比了下,两者的确存在一些差异。本文是在原来的译文基础上修订的。 (文章第二部分实在是太长,所以在此分成两部分翻译) 本文是通过普通的Promises 和 ES6的 Promise API 来介绍异步编程。这是两篇系列文章的第二部分 - 第一部分介绍了一下异步编程的基础(你需要充分理解一下以便明白这篇文章)。 1. 概述 下面函数通过一个 Promise异步返回结果: function asyncFunc() { return new Promise( function (resolve, reject) { resolve(value); // success ··· reject(error); // failure });} 可以像下面这样来调用 asyncFunc() : asyncFunc() .then(value => { /* success */ }) .catch(error => { /* failure */

初识JavaScript Promises

亡梦爱人 提交于 2019-12-09 13:55:48
JavaScript有很多槽点,嵌套回调怕是千夫所指。 很久之前,我一直使用async来处理JavaScript异步编程中的嵌套回调问题。当然我也大概的了解过一些其它旨在解决这些问题的类库,诸如EventProxy、Jscex、StepJS、thenjs。 当我第一次看到Promises规范的时候,我根本无法理解它所带来的好处。譬如每个初次学习Promises的人都见过如下的示例代码: //callbacks function callback(err, value){ if(err){ // do something return; } //do other things with value } //Promises promise.then(function(value){ //do something with value }, function(err){ //do other things with error }) 很难相信上面的代码会让人对Promises刮目相看。不过正如 bluebird 作者Petka所说,上面的代码是 “最不诚实的比较” 。所以我恳请你把类似的代码从你的记忆中擦出吧。 不妨让我们再回到async的讨论上。async的问题在于它不能优雅地应对需求的变化,一旦业务逻辑有较大的变化,代码结构会进行大幅度的调整

ECMAScript 6 promises(下):谈谈 API(二)

ε祈祈猫儿з 提交于 2019-11-29 11:47:10
原文地址: http://www.2ality.com/2014/10/es6-promises-api.html 原文作者:Dr. Axel Rauschmayer 译者:倪颖峰 原博客已经标明:本博客文档已经过时,可进一步阅读“Exploring ES6”中的 “ Promises for asynchronous programming ”。仔细对比了下,两者的确存在一些差异。本文是在原来的译文基础上修订的。 博文下半部分为纯干活内容,包括介绍的 ES6 中 Promise API,以及其简单的实现方式与思想,以及一些拓展内容。 9. 速查表:ES6的 Promise API 这里简单的给出一下 ES6 Promise 的API 简述,详细描述请看规范http://www.ecma-international.org/ecma-262/6.0/#sec-promise-objects 9.1. 术语 P romise 的 API 就是关于异步获取结果。一个Promise 对象(简称Promise)是一个独立的对象,会通过该对象传递结果。 状态: 一个Promise 处于以下三个(互斥)状态中的某一个状态 : 1. 结果未完成时,Promise 状态为 pending。 2. 得到结果时,Promise 状态为 fulfilled。 3. 当错误发生时,Promise 状态为