美文网首页
JS语法的一些记录

JS语法的一些记录

作者: limbo_lyn | 来源:发表于2020-02-24 11:38 被阅读0次

    由于本人一直是负责IOS和安卓端的开发,临时转去做小程序和h5的开发,对JS的很多语法概念都不熟悉,看到一些函数调用,一头雾水,因此对一些比较特别的语法做些记录;

    1、三点操作...

    解释:对象中的扩展运算符(...)用于取出参数对象中所有可遍历属性,拷贝到当前对方中

    所以

      reducers: {

        save(state, { payload: data }) {

          return { ...state, ...data };

        },

      },

    就是将data的新的属性值,遍历覆盖到state中,并返回新的state

    2、小程序异步封装操作

    const promisify = original => {

      return function(opt) {

        return new Promise((resolve, reject) => {

          opt = Object.assign({

            success: resolve,

            fail: reject

          }, opt)

          original(opt)

        })

      }

    }

    之后我们就可以这样调用

    promisify(wx.getStorage)({key: 'testNum'}).then(value=> {

      // success}).catch(reason=> {

      // fail})

    这个封装,涉及到了闭包,Promise、Object.assign和小程序的api,我们逐步分析

    1)小程序的异步函数如:

    wx.getStorage,获取本地缓存中的字段

    函数 原型:

    我们需要的参数有三个key,success和fail,

    因为Promise函数就刚好有resolve和reject函数,因此我们new 一个Promise,并把resolve和reject和需要查询的key值通过

    Object.assign合并成一个新的json参数对象,

    然后通过original即传入的小程序异步函数调用,成功后就会调用then,失败则是catch

     opt = Object.assign({

            success: resolve,

            fail: reject

          }, opt)

    这个函数,最终返回的还是一个promise对象,他只是把callback的模式(缩进的噩梦)更改成链式表达式

    original => { return function  }

    是箭头函数,表示参数为original的闭包,这个闭包的返回本应在调用是再加个(),但是在闭包的最后一行已经通过

    original()进行调用了

    参考

    把微信小程序异步API封装成为Promise,简化异步调用

    ES6之Object.assign()详解

    廖雪峰的JS教程

    相关文章

      网友评论

          本文标题:JS语法的一些记录

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