关于promise对象学习
2018-05-31 本文已影响0人
QRFF
- 我们在使用函数的时候经常需要在函数的参数传入另外一个函数,一层一层传递,很容易造成回调地狱,这样的代码不利于维护;
- promise是个构造函数对象,解决了回调问题,它有三种状态,resolve,reject,pedding,常用到的方法则有 then,catch,all,race
- 这是我看到有关promise入门最好的文章https://juejin.im/post/5afe6d3bf265da0b9e654c4b
// let p = new Promise((resolve,reject)=>{
// setTimeout(function(){
// var num = Math.ceil(Math.random()*10)
// if(num<=5){
// resolve(num)
// }
// else{
// reject('数字太大了')
// }
// },1000)
// })
//reject用法
// p.then((data)=>{
// console.log('resolved',data)
// },(err)=>{
// console.log('rejected',err)
// })
//catch的用法
// p.then((data) => {
// console.log('resolved',data);
// console.log(somedata); //此处的somedata未定义
// })
// .catch((err) => {
// console.log('rejected',err);
// })
//all的用法
// let p1=new Promise(function(resolve,reject){})
// let p2=new Promise(function(resolve,reject){})
// let p3=new Promise(function(resolve,reject){})
// let p = Promise.all([p1,p2,p3])
// p.then(function(){
// // 三个都成功则成功
// },function(){
// // 三个都成功则成功
// })
//race的用法
// function requestImg(){
// var p = new Promise((resolve,reject)=>{
// var img = new Image();
// img.onload=()=>{
// resolve(img)
// }
// img.src='图片的路径'
// })
// return p;
// }
// function timeout(){
// var p = new Promise((resolve,reject)=>{
// setTimeout(()=>{
// reject('图片请求超时')
// },5000)
// })
// return p;
// }
// Promise.race([requestImt(),timeout()]).then((data)=>{
// console.log(data)
// }).catch((err)=>{
// console.log(err)
// })