promise
1、then()方法
function cook() {
console.log('开始做饭');
var p = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('做饭完成');
resolve('鸡蛋炒饭');
}, 1000);
});
return p;
}
function eat(data) {
console.log('开始吃饭: ' + data);
var p = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('吃饭完毕');
resolve('碗筷一份');
}, 2000)
});
return p;
}
function wash(data) {
console.log('开始洗碗: ' + data);
var p = new Promise((resolve, reject) => {
setTimeout(() => {
console.log("洗完完毕");
resolve('干净的碗筷');
}, 2000);
});
return p;
}
cook()
.then(eat)
.then(wash)
.then((data) => {
console.log(data);
});
// 开始做饭
// 做饭完成
// 开始吃饭: 鸡蛋炒饭
// 吃饭完毕
// 开始洗碗: 碗筷一份
// 洗完完毕
// 干净的碗筷
2、reject()方法
function cook() {
console.log('开始做饭');
var p = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('做饭失败');
reject('烧焦了');
});
});
return p;
}
function eat(data) {
console.log('开始吃饭: ' + data);
var p = new Promise((resolve, reject) => {
setTimeout(() => {
console.log('吃饭完毕');
resolve('碗筷');
}, 2000)
});
return p;
}
cook()
.then(eat)
.catch(data => {
console.log(data + '没吃饱');
})
/*
开始做饭
做饭失败
烧焦了没吃饱
*/
3、all()方法
//切菜
function cutUp(){
console.log('开始切菜。');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('切菜完毕!');
resolve('切好的菜');
}, 2000);
});
return p;
}
//烧水
function boil(){
console.log('开始烧水。');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('烧水完毕!');
resolve('烧好的水');
}, 1000);
});
return p;
}
Promise
.all([cutUp(), boil()])
.then(function(results){
console.log("准备工作完毕:");
console.log(results);
});
/*
开始切菜。开始烧水。
烧水完毕!切菜完毕!
准备工作完毕:[ '切好的菜', '烧好的水' ]
*/
4、race()方法
//切菜
function cutUp(){
console.log('开始切菜。');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('切菜完毕!');
resolve('切好的菜');
}, 2000);
});
return p;
}
//烧水
function boil(){
console.log('开始烧水。');
var p = new Promise(function(resolve, reject){ //做一些异步操作
setTimeout(function(){
console.log('烧水完毕!');
resolve('烧好的水');
}, 1000);
});
return p;
}
Promise
.all([cutUp(), boil()])
.then(function(results){
console.log("准备工作完毕:");
console.log(results);
});
/*
开始切菜。
开始烧水。
烧水完毕!
准备工作完毕:
烧好的水
切菜完毕!
*/