memory主要用途是?

来源:3-9 memory的设计

贝尔_1987

2015-01-04 23:33

目前但看代码能看懂,但不明白具体有什么作用。加入之后立即调用之前的参数,什么场合有用?

写回答 关注

1回答

  • 艾伦Aaron
    2015-01-05 08:19:13
    已采纳

    首先,回调函数是从异步队列分离出来的,那么就是无缝贴合Deferred的设计

    可以查看下Deferred模块会有这么一段代码

    var tuples = [
    	// action, add listener, listener list, final state
    	["resolve", "done", jQuery.Callbacks("once memory"), "resolved"],
    	["reject", "fail", jQuery.Callbacks("once memory"), "rejected"],
    	["notify", "progress", jQuery.Callbacks("memory")]
    ],

    这里设计到规范的接口,done | fail | progress方法都是通过jQuery.Callbacks("once memory") 或jQuery.Callbacks("memory")生成的。

    实际上在Callback源码fire方法有一句 memory = options.memory && data;这样就很巧妙的缓存当前参数的值,提供给下一个使用,这个就是then,pipe链式数据的一个基础了,此刻的操作,我们把memory保存了这个数据的值

    具体的请看Deferred这一章,因为jQuery很多东西都是设计给自己用的,但是这个思路与技巧是非常的nice!




    贝尔_198...

    非常感谢!

    2015-01-07 12:35:51

    共 1 条回复 >

jQuery源码解析(架构与依赖模块)

由浅入深地剖析jQuery库的设计与实现,揭开框架背后的秘密

84049 学习 · 280 问题

查看课程

相似问题