您的位置:首页 > Web前端 > JavaScript

js Promise学习

2015-08-27 18:29 681 查看

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: