为了账号安全,请及时绑定邮箱和手机立即绑定

memory主要用途是?

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

正在回答

1 回答

首先,回调函数是从异步队列分离出来的,那么就是无缝贴合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!




5 回复 有任何疑惑可以回复我~
#1

贝尔_1987 提问者

非常感谢!
2015-01-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

memory主要用途是?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信