美文网首页
小程序-同步异步

小程序-同步异步

作者: JX灬君 | 来源:发表于2021-08-06 22:57 被阅读0次
    • 异步编程的优势
      性能更高,无需等待上一级执行完成,下一步就可异步执行。

    • 异步编程的劣势
      维护与调试难度更大。

    • 回调函数
      回调函数里,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消失的能力。

    相关文章

      网友评论

          本文标题:小程序-同步异步

          本文链接:https://www.haomeiwen.com/subject/erievltx.html