码迷,mamicode.com
首页 > 其他好文 > 详细

promise的使用

时间:2018-07-20 17:35:06      阅读:171      评论:0      收藏:0      [点我收藏+]

标签:test   mis   als   执行   out   随机数   res   老师   call   

之前使用promise都是用时会,用时理解,过后一段时间没有又忘了,今天有空正好整理一下,方便日后自己查阅。-- 代码来源于阮一峰老师的 promise

 Promise有4个方法:

[ resolve,  reject,  all,  race ]

常见的resolve和reject  

 resolve: 成功时的回调函数

 reject:    失败时的回调函数

//定义 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是来处理失败后的操作。

 

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

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

完(皮皮虾, 皮一下)。

promise的使用

标签:test   mis   als   执行   out   随机数   res   老师   call   

原文地址:https://www.cnblogs.com/webBlog-gqs/p/9342130.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!