promise的使用

以前使用promise都是用时会,用时理解,事后一段时间没有又忘了,今天有空正好整理一下,方便往后本身查阅。-- 代码来源于阮一峰老师的 promise数组

 Promise有4个方法:promise

[ resolve,  reject,  all,  race ]dom

常见的resolve和reject  异步

 resolve: 成功时的回调函数函数

 reject:    失败时的回调函数spa

//定义 Promise 的回调函数
function test(resolve, reject) {
  //采用随机数来模拟成功和失败。
  var timeOut = Math.random() * 2;
  console.log('set timeout to: ' + timeOut + ' seconds.');
  setTimeout(function(){
    if (timeOut < 1) {
      // 成功 resolve
      console.log('call resolve()....');
      resolve('200 ok');
    } else {
      // 失败 reject
      console.log('call reject()...');
      reject('timeout in:' + timeOut + ' seconds.');
    }
  }, timeOut * 100);
}


new Promise(test)
.then(result => { //成功后进行的代码操做
 console.log('success');
})
.catch(reason => { //失败后进行的代码操做
 console.log('fail');
})

 

这里的test回调函数是来处理请求数据,接口等的, 然后面的then就是来执行请求成功后的操做, catch是来处理失败后的操做。code

 

Promise.all(数组)  同时进行的异步操做blog

// Promise.all(数组)  同时进行的异步操做
var p1 = new Promise((resolve, reject)=>{
 // 采用随机数来模拟成功和失败。
var err = Math.random() > .5 ? true : false; if (err) { setTimeout(reject, 600, 'P1'); } else { setTimeout(resolve, 600, 'P1'); } }) var p2 = new Promise((resolve, reject)=>{
//采用随机数来模拟成功和失败。
var err = Math.random() > .5 ? true : false; if (err) { setTimeout(reject, 300, 'P2'); } else { setTimeout(resolve, 300, 'P2'); } }) //p1,p2操做成功就执行then Promise.all([p1, p2]).then(results=>{ console.log('成功: '+results); }) //p1,p2其中有一个操做失败就执行catch .catch(reason=> { console.log('错误:'+reason); })

 

Promise.race([p1, p2]) 对同时进行的异步操做,那个先执行完就采用那个(好比:同时向两个URL读取用户的我的信息,只须要得到先返回的结果便可。[阮一峰老师的好比])接口

var p1 = new Promise((resolve, reject)=>{
  var err = Math.random() > .5 ? true : false;
  if (err) {
    setTimeout(reject, 600, 'P1');
  } else {
    setTimeout(resolve, 600, 'P1');
  }
})

var p2 = new Promise((resolve, reject)=>{
  var err = Math.random() > .5 ? true : false;
  if (err) {
    setTimeout(reject, 300, 'P2');
  } else {
    setTimeout(resolve, 300, 'P2');
  }
})


// p1,p2同时操做,哪个先获得结果就执行那个,成功执行then,失败就执行catch
Promise.race([p1, p2]).then(results=>{
 console.log('成功: '+results);
}).catch(reason=> {
 console.log('错误:'+reason);
})

完(皮皮虾, 皮一下)。get

相关文章
相关标签/搜索