每当使用传递给它的参数调用匿名函数时,这实际上会打包匿名函数中的所有内容,并且如果在第一个匿名函数从数据库或ajax调用回调之前调用了对订阅函数的另一个调用,这不会影响以前的匿名函数,并且当前正在调用的匿名函数只会创建一个新的闭包,并且每个新匿名闭包的所有数据都不会影响下一个闭包或上一个闭包?
this.subscribe.call(this, e.horizontaladded, function (a, fn) {
if (!a.extra.owner.id) { return; };
(function (a) {
dataBase.insert(
dbPart(
['horizontal?a=', a.extra.owner.instanceName, '&id=', a.extra.owner.id].join(''),
a.target
),
dbCB(success, error)
);
function success(data, status) {
if (status === 'error') { return; };
console.log('Horizontal Added');
a.target.id = data.id,
a.target.HTML().addClass('alum_' + data.id),
a.target.finish.id = data.finishID,
a.target.size.id = data.sizeID,
a.target.siteLine.id = data.sitelineID;
}(a));
}, true);
换句话说,对于每个调用我订阅的 e.horizontaladd 的调用,每个新的匿名函数都会被调用,并用它自己的所有人员数据关闭,垃圾收集会清理所有的闭包吗?
因此,如果我订阅了这个函数,如果进行了 30 次水平添加调用并创建了 30 个闭包,那么当回调数据库成功时,闭包会自行清理吗?