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 ...
随机推荐
- CF 445A DZY Loves Chessboard
A. DZY Loves Chessboard time limit per test 1 second memory limit per test 256 megabytes input stand ...
- 关于javaagent拦截不到File类的问题
main类: Java code ? 1 2 3 4 public static void main(String[] args) { File file = new File(& ...
- adviser vs mentor
研究生或博士生提到自己导师的时候是说adviser呢?还是mentor呢? 至少我认识一个Berkeley的博士是说adviser的. 另外,我的导师也是说adviser. 那还是说adviser吧- ...
- 【MySQL】 DB 回滚崩溃案例一则
一台mysql数据库在多次断电之后,长时间等待未果直接重启mysql 服务.之后错误日志中报错: 170119 :: InnoDB: Error: page log sequence number I ...
- 通过JS模拟select表单,达到美化效果[demo][转]
转自: http://www.cnblogs.com/dreamback/p/SelectorJS.html 通过JS模拟select表单,达到美化效果 Demo ------------------ ...
- easyui---基础组件:dialog
依赖下面两个组件 window linkbutton linbutton组件:就是超链接变成按钮 $(function(){ $("#linkbuttonid").linkbutt ...
- POJ-1414 Life Line (暴力搜索)
Life Line Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 855 Accepted: 623 Description L ...
- OpenJ_Bailian - 4152 最佳加法表达式 dp
http://bailian.openjudge.cn/practice/4152?lang=en_US 题解 :dp[i][j]代表前i个字符加j个加号可以得到的最小值,于是dp[i+k[j+1]可 ...
- deque Comparison of Queue and Deque methods Comparison of Stack and Deque methods
1. 队列queue和双端队列deque的转换 Queue Method Equivalent Deque Methodadd(e) addLast(e)offer(e) offerLast(e)re ...
- Lost connection to MySQL server during query ([Errno 104] Connection reset by peer)
Can't connect to MySQL server Lost connection to MySQL server during query · Issue #269 · PyMySQL/Py ...