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);
});
/*

开始切菜。

开始烧水。
烧水完毕!

准备工作完毕:
烧好的水

切菜完毕!

*/ 

posted on 2018-06-10 19:28  winerss  阅读(92)  评论(0编辑  收藏  举报

导航