js Promise学习
2015-08-27 18:29
633 查看
js Promise
promise入参为两个成功时的执行 resolve
失败时的执行 reject
promise的状态
肯定(fulfilled) 该 Promise 对应的操作成功了
否定(rejected) 该 Promise 对应的操作失败了
等待(pending) 还没有得到肯定或者否定结果,进行中
结束(settled) 已经肯定或者否定了
promise必须实现then方法,只有实现then方法才可以取出promise里面的值
var promise = new Promise(function(resolve, reject) { resolve(1); }); promise.then(function(val) { console.log(val); // 1 });
then方法返回的不是值,而是promise,此promise需要用then方法实现之后才可以取出其中的值
var promise = new Promise(function(resolve, reject) { resolve(1); }); var aa = promise.then(function(val) { console.log(val); // 1 return val + 2; }); aa.then(function(data){ console.log(data);// 3 }); console.log(aa);//obj
此时的aa是一个promise,状态是pending
链接调用;promise的链接调用功能是非常强大,并且代码可读性也是相当的高
var promise = new Promise(function(resolve, reject) { resolve(1); }); promise.then(function(val) { console.log(val); // 1 return val + 2; }).then(function(data){ console.log(data);// 3 });
执行顺序;promise执行在后;
var promise = new Promise(function(resolve, reject) { resolve(1); }); promise.then(function(val) { console.log(val); // 1 });
console.log("first");
以上代码会先输入first,然后再输出1
如何取promise当中的值
var promise = new Promise(function(resolve, reject) { resolve(1); }); var aa = promise.then(function(val) { var res = {}, age = val + 2; res.age = age; return res; }).then(function(data) { data.name = "zhangsan"; return data; }).then(function(data) { if (data.name == "zhangsan" && data.age == 3) { data.address = "Hangzhou China"; } return data; }); aa.then(function(data) { console.log(data); }) //返回结果: [object Object] { address: "Hangzhou China", age: 3, name: "zhangsan" }
每一次实现then方法的时候,都需要将data全部组装返回,这样才可以保证最后得到的值是全部的data
参考
JavaScript Promises;
相关文章推荐
- js 正则
- 通过javascript获取URL中的参数
- JS 跨域问题常见的五种解决方式
- iOS js oc相互调用(JavaScriptCore)(二)
- js变量声明提前
- JS 事件
- JSON字符串对应实体类
- js实现发送短信验证码后的倒计时功能(无视页面刷新)
- 如何克服 JavaScript 框架疲劳?
- js延迟函数
- js中prototype的理解摘录
- 百分比进度框
- js设置div的class, 在360浏览…
- JS获取被点击对象id
- JS 合并数组之concat
- js算法:动态规划-金矿模型与买书问题(附js源码)
- zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
- JSP运行原理
- js的indexOf方法IE不兼容问题
- 第四篇 arcgis api for javascript 读取本地发布瓦片cache