Promise学习探究
学习熟知吧,原理还是继续吧
例子1:
var isGeted;
function getRet(){
return new Promise(function(resolve, reject) {
//一些异步操作
if(isGeted){
resolve("yYYYYYYY")
}
else{
reject("NNNNNNNNNNNNNNNNNN")
}
});
}
isGeted=true;
getRet().then(function(data){
console.log("返回数据:"+data)
}); isGeted=false;
getRet().then(function(data){
console.log("返回数据:"+data)
}).catch(function(err){
console.log("错误:"+err)
}); 例子2:
Promise原理探究:
var promise1 = new Promise(function(resolve, reject) { //某个异步方法
setTimeout(function() { resolve('foo'); }, 300); }); promise1.then(function(value) { console.log(value); }); console.log(promise1); //返回:promise对象,状态是pending "foo"
console.log(promise1); //返回:promise对象,状态是resolved promise像一个代理,异步方法不知道执行结果,promise预定好,成功执行某方法,失败执行某方法,让异步方法按照成功与失败的设定路线去执行。
又像是个状态管理工具,状态只有三种:resolved,rejected,pending
pending---->resolved
pending---->rejected promise1.then(function(value) { console.log(value); }).catch(function(err){ }); then其实接受两个函数参数,如下:
promise1.then(function(value) { console.log(value); },function(err){
console.log(err);
})
一个是resolve函数,一个是reject函数。 new Promise后就会被执行一次,所以一般外面包成一个函数,如:
var funOne = function(){
return new Promise(function(resolve,reject){ })
}
funOne.then().then().catch().finally().race().all()等等。
略。
Promise学习探究的更多相关文章
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- Javascript - Promise学习笔记
最近工作轻松了点,想起了以前总是看到的一个单词promise,于是耐心下来学习了一下. 一:Promise是什么?为什么会有这个东西? 首先说明,Promise是为了解决javascript异步编 ...
- Promise 学习笔记 - 时间支配者
本文同步自我的个人博客:http://www.52cik.com/2015/11/08/promise.html JavaScript 的 promises 事实标准称为 Promises/A+.ES ...
- Javascript Promise 学习 (中)
时隔多日,对promise有了多一点点的了解. 最近用angularjs 做开发,所以研究了一下它的 $q 功能不算很强大,算是简化版的 Q.js 参考了一下源码,不过我的等级还差很多... 作为学习 ...
- Javascript Promise 学习(上)
Promise 就是处理异步的一个规范方法 a();b();alert("a");如果a() 里面有一个ajax 或者settimeout 那么alert("a" ...
- JavaScript之Promise学习笔记
一直想知道Promise到底是怎么实现的,网上一搜几十篇文章,看的一脸蒙蔽.最后算是找到几个讲的真心很详细明了的.看了一份源码看了很久很久……最后找大佬问了几处看不懂的地方,大佬只看了十几分钟就看懂了 ...
- Android学习--探究服务(一)
什么是服务? 服务(service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖任何的用户界面,即使应用被切换到后台或者 ...
- Promise 学习心得
当了这么久码农到今天没事才开始去深究 Promise 这个对象 什么是 Promise, Promise 有什么用? 在写代码的时候多多少少都有遇见过地狱式的回调 代码看起来没问题就是有点乱,Prom ...
随机推荐
- 提交代码到自己的github仓库
说起来尴尬,好几年前就搞了github建了仓库,当时玩得还有点6,后来一直的公司都是svn,自己业务项目也没玩,都忘了要怎么提交代码到自己的仓库了. 这边再来一波记录吧. 一.配置用户名 git co ...
- Linux日志五大命令详解
1.who 命令 who 命令查询 utmp 文件并报告当前登录的每个用户.Who 的缺省输出包括用户名.终端类型.登录日期及远程主机.使用该命令,系统管理员可以查看当前系统存在哪些不法用户,从而对其 ...
- Mac OS 安装phpMyAdmin
http://www.coolestguyplanettech.com/installing-phpmyadmin-on-mac-osx-10-7-lion/
- [sharepoint]Office Web Apps for SharePoint 2010
Office Web Apps for SharePoint 2010 2012年09月20日 ⁄ 综合 ⁄ 共 908字 ⁄ 字号 小 中 大 ⁄ 评论关闭 After you install Of ...
- eclipse使用maven打包时去掉测试类
eclipse使用maven打包时去掉测试类 在pom.xml文件中增加如下配置: <plugin> <groupId>org.apache.maven.plugins< ...
- Edge Animate使用SPRITESHEET创建动画(三)
在Flash动画制作中,使用SpriteSheet制作动画元素是一个常见和普遍的方法.在Edge Animate中,我们也可以利用SpriteSheet来制作HTML5动画.本文将从一个示例出发,介绍 ...
- Ubuntu 16.04系统下软件中心Software闪退解决办法
按住Ctrl+Alt+T打开终端输入: sudo apt-get update //更新 sudo apt-get dist-upgrade //升级 sudo apt-get install --r ...
- oracle如何删除表空间
drop tablespace 表空间名 including contents and datafiles cascade constraint; ............. 以system用户登录, ...
- POJ 2653 - Pick-up sticks - [枚举+判断线段相交]
题目链接:http://poj.org/problem?id=2653 Time Limit: 3000MS Memory Limit: 65536K Description Stan has n s ...
- Oracle性能优化之普通用户使用dbms_xplan包需要有的权限
普通用户使用dbms_xplan包查看执行计划需要对v$sql.v$sql_plan.v$session及v$sql_plan_statistics_all这四个视图同时具有select权限. 如果普 ...