150行代码带你实现微信小程序中的数据侦听(3)

有的时候我们希望通过watch添加函数的同时还立即执行该函数一次, 这个时候我们需要再定义额外的参数传递到watch中. 问题是这个函数不一定是同步函数.

简单处理如下:

class VX { async watch (key, fn, options = { immediately: false }, obj = this.store) { handleDep = fn walkChains(key, obj) options.immediately && await fn(options.defaultParams) } }

this绑定丢失问题

在我在对VX进行删除属性方法的扩展时, 我往walkChain函数中添加了一个执行回调函数的机制, 并且在删除属性这个方法直接调用了walkChain:

+ function walkChains (key, obj, fn) { const segments = key.split('.') let deepObj = obj while (segments.length) { deepObj = deepObj[segments.shift()] + fn && fn() } } del (key, obj = this.store) { walkChains(key, obj, handleDep.clear) delete obj[key] }

因为handleDep.clear当成参数传递进walkChains中会 丢失this绑定 , 所以上面那段代码其实是有问题的, 不过稍作修改就好了:

del (key, obj = this.store) { + walkChains(key, obj, () => handleDep.clear()) delete obj[key] }

总结

以上所述是小编给大家介绍的150行代码带你实现微信小程序中的数据侦听,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/ab02576afb1a7cc433bb809e62ab047c.html