promise理解
每个操作都返回一样的promise对象,保证链式操作
每个链式都通过then方法
每个操作内部允许犯错,出了错误,统一由catch error处理
操作内部,也可以是一个操作链,通过reject或resolve再造流程
实现:
如果各位熟悉前端js,相信你一定了解
- jQuery(1.5+)的deferred
- Angularjs的$q对象
nodejs里的实现
- bluebird (https://github.com/petkaantonov/bluebird 后面继续讲,保持神秘)
- q (https://github.com/kriskowal/q Angularjs的$q对象是q的精简版)
- then (teambition作品 https://github.com/teambition/then.js )
- when (https://github.com/cujojs/when )
- async (https://github.com/caolan/async 最简单的)
- eventproxy(朴灵作品 https://github.com/JacksonTian/eventproxy,使用event来处理流程,也是不错的尝试)
其他语言实现,详见 https://promisesaplus.com/implementations
其实,只要掌握了promise/a+规范,
- a) 异步操作的最终结果,尽可能每一个异步操作都是独立操作单元
- b) 与Promise最主要的交互方法是通过将函数传入它的then方法(thenable)
- c) 捕获异常catch error
- d) 根据reject和resolve重塑流程

promise理解的更多相关文章
- promise 理解与总结
对Promise的理解 Promise是异步编程的一种解决方案,可以获取异步操作的消息,避免了地狱回调,它比传统的解决方案回调函数和事件更合理和更强大. 所谓Promise,简单说就是一个容器,里面保 ...
- angular的promise理解
promise承诺是angular的一个重点部分,是一种异步处理值(或非值)的方法.一般程序是从上至下执行,遇到某个地方需要花点时间,就干等着把这个地方执行完了,才继续做下一个,看着有点笨蛋.而pro ...
- Promise 理解与使用
个人觉得这篇博客写的非常详细且易懂,推荐给小伙伴们~ https://www.cnblogs.com/lvdabao/p/es6-promise-1.html#!comments
- 理解Promise
一.Propmise基本用法 Promise用于发送一个异步完成的结果,是替代回调函数的另一种选择.可以把Promise理解为一种异步函数. 以下函数通过一个Promise来异步地返回一个结果 fun ...
- promise第一篇-简介
1. 创建一个promise对象 var promise = new Promise(function(resolve, reject){ //异步处理 //处理结束后调用resolve或reject ...
- angular $q promise详解
前言 通过本文,你大概能清楚angular promise是个啥,$q又是个啥,以及怎么用它.这里咱们先灌输下promise的思想. 下面写的全是废话,一些看着高逼格其实没什么大作用的概念,想知道$q ...
- Promise 知识点
.done() Promise 对象的回调链,不管以then方法或catch方法结尾,要是最后一个方法抛出错误,都有可能无法捕捉到(因为 Promise 内部的错误不会冒泡到全局).因此,我们可以提供 ...
- 一文了解Promise使用与实现
前言 Promise 作为一个前端必备技能,不管是从项目应用还是面试,都应该对其有所了解与使用. 常常遇到的面试五连问: 说说你对 Promise 理解? Promise 的出现解决了什么问题? Pr ...
- Apache Spark源码走读之6 -- 存储子系统分析
欢迎转载,转载请注明出处,徽沪一郎. 楔子 Spark计算速度远胜于Hadoop的原因之一就在于中间结果是缓存在内存而不是直接写入到disk,本文尝试分析Spark中存储子系统的构成,并以数据写入和数 ...
随机推荐
- 圆的反演变换(HDU4773)
题意:给出两个相离的圆O1,O2和圆外一点P,求构造这样的圆:同时与两个圆相外切,且经过点P,输出圆的圆心和半径 分析:画图很容易看出这样的圆要么存在一个,要么存在两个:此题直接解方程是不容易的,先看 ...
- JavaOOP项目 CMS内容管理系统
数据库里创建一个News表,要有标题.作者.时间.内容等列. 1:首先要使用JDBC进行数据库连接,得先在项目里新建一个Folder,把Sqlserver 的驱动jar包导入. 2:使用MyEclip ...
- CCF真题之Z字形扫描
201412-2 问题描述 在图像编码的算法中,需要将一个给定的方形矩阵进行Z字形扫描(Zigzag Scan).给定一个n×n的矩阵,Z字形扫描的过程如下图所示: 对于下面的4×4的矩阵, 1 5 ...
- TP隐藏入口
我们知道,在thinkphp的案例中有一个.htaccess文件,里面配置了URL的一些重写规则,如: <IfModule mod_rewrite.c> RewriteEngine on ...
- ThinkPHP讲解(七)——修改删除
修改数据 方式一:数组方式,直接将数据库里需要修改的内容进行修改 function Update() { //1.数组方式 $model=D("Info"); $attr=arra ...
- C#语言基础2016/3/6
一. 基础知识 输入输出 Console.Write();//输出语句,自动换行 Console.WriteLine();//输出语句 Console.WriteLine();输入语句 Consol ...
- 8007003Windows Update遇到未知错误
如果在检查更新时收到 Windows Update 错误 80070003,则需要删除 Windows 用于标识计算机更新的临时文件.若要删除临时文件,请停止 Windows Update 服务,删除 ...
- 给Debian浏览器安装flash播放插件
sudo apt-get install flashplugin-nonfree
- 蒙地卡罗法求 PI
问题: 蒙地卡罗为摩洛哥王国之首都,该国位于法国与义大利国境,以赌博闻名.蒙地卡罗的基本原理为以乱数配合面积公式来进行解题,这种以机率来解题的方式带有赌博的意味,虽然在精确度上有所疑虑,但其解题的思考 ...
- 161103、Spring Boot 入门
Spring Boot 入门 spring Boot是Spring社区较新的一个项目.该项目的目的是帮助开发者更容易的创建基于Spring的应用程序和服务,让更多人的人更快的对Spring进行入门体验 ...