-
异步编程的优势
性能更高,无需等待上一级执行完成,下一步就可异步执行。 -
异步编程的劣势
维护与调试难度更大。 -
回调函数
回调函数里,this = null
当我们在小程序data中设置了一个变量iCount
在项目中我们可以通过this.data.iCount 拿到值。
如果,我们在回调函数function中通过this.data.iCount获取值时,程序会报错,因为在异步回调函数里,this = null,
但是如果用箭头函数写回调函数时能正常拿到this.data.iCountd的值。(原生function中this指向的是调用者,箭头函数this绑定的是定义时的那个对象,箭头函数的this绑定看当前所在上下文,在哪个函数上下文,this就指向哪个对象。如果有嵌套,则绑定到最近的对象上)
// 报错,this = null
success : function(res){
console.log(this.data.iCount);
}
// 成功
success : (res) => {
console.log(this.data.iCount);
}
- 小程序异步方法wx.request
// 正常写法
wx.request({
url: 'url',
header:{
appkey: 'ot3YtxjoehslXFpX'
},
success:(res) => {
console.log(this.data.iCount)
console.log(res)
}
})
// 改成Promise函数(单个异步函数性能上无任何提升,只是用来关联下Promise函数,如果是多个异步函数,Promise函数就尤为重要)
let requestWx = new Promise((resolve, reject) => {
wx.request({
url: 'http://bl.talelin.com/v1/classic/latest',
header:{
appkey: 'ot3YtxjoehslXFpX'
},
success:(res) => {
console.log(this.data.iCount)
resolve(res)
}
})
})
requestWx.then((res) => {
console.log(res)
; })
- Promise的作用
解决异步嵌套的问题 - 回调地狱
解决异步函数return消失的能力。
网友评论