您的位置:首页 > 其它

ES6基础之详解Promise基本用法

2017-09-29 11:20 666 查看
一、Promise是一个构造函数,用来生成promise实例;

var promise=new Promise();


二、构造函数接收一个参数,这个参数是一个函数,当创建实例的时候,参数里的函数会立即执行;

var promise=new Promise( function(){ console.log('这行代码会立即执行!')  } )


三、参数里面的函数又接收两个参数,两个参数均为函数,一个resolve,一个reject;

var promise=new Promise( function( resolve,reject   ){ console.log('这行代码会立即执行!')  } )


四、异步操作成功时调用resolve,resolve函数将promise对象的状态从pending变为resolve,并将操作的结果作为参数传出去;

var promise=new Promise( function(){
wx.request({
url:'xxxxx',
method:'get',
success:function(res){
resolve(res);
//发请求成功了,则调用resolve函数
},
fail:function(err){
reject(err)
//发请求失败,则调用reject函数
}
})
})


五、异步操作失败时调用reject,reject函数将promise对象的状态从pending变为rejected,并将操作报出的错误,作为参数传递出去;

//同上


六、实例生成以后,可以用then方法分别指定resolved状态和rejected状态的回调函数;

//接上一步,加入请求成功,这时候,调用resolve函数,将promise的状态转为resolved,
//在这时候实例promise可以利用then方法,指定,当状态变成resolved时,做什么
//例如,上一步,get方式请求成功之后,将获取的数据解析一下,则可以这样子写
promise.then( fuction(value){
//这时候是状态为resolved的时候  value就是通过resolve函数传过来的参数
//解析数据
......
},function(error){
//这时候是状态为rejected的时候   也就是说请求失败了,调用reject函数,promise状态变成了rejected
//提醒用户  请求失败
console.log("请求数据失败")
} )


七、then方法接收两个函数参数,分别作为resolved和rejected的回调函数,第二个参数可选;

//同上


八、then方法

//promise实例具有then方法,说明then方法是定义在原型对象上,
//作用是当实例状态发生改变时,为其添加回调函数


九、catch方法

//catch方法也定义在原型上,在then方法后调用,发生错误时调用
//注意,本质是
.then(null,rejection)的别名


十、没有十,我只是为了凑整

本文参考阮一峰《ES6入门》,个人是看了好几遍才完全看懂,写出来希望对你有所帮助。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: