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中存储子系统的构成,并以数据写入和数 ...
随机推荐
- 树形DP(Rebuilding Roads poj1947)
题意:给出一颗树,求要形成一颗元素个数是p的子树,最少要去掉多少边 #include"stdio.h" #include"string.h" #include& ...
- Struts2的Action名称搜索顺序:2014.12.30
struts.xml配置: <struts> <package name="hw" namespace="/test" extends=&qu ...
- angular form 验证
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- EBS 密码相关
SELECT usr.user_name, apps.cux_fnd_web_sec.decrypt ((SELECT (SELECT apps.cux_fnd_web_sec.decrypt (fn ...
- 常用的网络配置命令 ifconfig 所在的包
通过rpm的数据库反查 ifconfig这个可执行文件的提供者,得出这个文件属于一个叫 net-tools 的包
- Hibernate中Session的get和load
hibernate中Session接口提供的get()和load()方法都是用来获取一个实体对象,在使用方式和查询性能上有一些区别.测试版本:hibernate 4.2.0. get Session接 ...
- android 项目学习随笔十七(ListView、GridView显示组图)
ListView.GridView显示组图,处理机制相同 <?xml version="1.0" encoding="utf-8"?> <Li ...
- mysql笔记03 查询性能优化
查询性能优化 1. 为什么查询速度会慢? 1). 如果把查询看作是一个任务,那么它由一系列子任务组成,每个子任务都会消耗一定的时间.如果要优化查询,实际上要优化其子任务,要么消除其中一些子任务,要么减 ...
- javaWeb 使用cookie显示商品浏览记录
package de.bvb.cookie; import java.io.IOException; import java.io.PrintWriter; import java.util.Date ...
- JSONArray遍历
java代码 方法一: 1 2 3 4 5 JSONArray array = JSONArray.fromObject(data); for (Object object : array) { ...