【发布时间】:2014-03-18 15:20:53
【问题描述】:
有没有办法添加到 jQuery Callbacks 对象的内存中?例如,如果有一个设置了内存标志的 jQuery Callbacks 对象,有没有办法在列表中的一个回调函数中向内存添加一个值,以便下一个运行的函数将获得附加值?
我想基本上在 Deferred then 链的末尾添加一个额外的参数给 failFilter 函数,而不返回一个新的被拒绝的 Deferred 对象。
我目前在做什么:
deferred.then(null, function(error, errorType){
errorType = typeof(errorType) === "undefined" ? "INDEXEDDB_ERROR" : errorType;
return new jQuery.Deferred().reject(error, errorType);
});
我想做的事:
deferred.then(null, function(error, errorType){
errorType = typeof(errorType) === "undefined" ? "INDEXEDDB_ERROR" : errorType;
return [error, errorType];
});
并且基本上在延迟 then 链的末尾有错误处理程序来接收 error 和 errorType 作为参数
【问题讨论】:
-
从失败回调中返回任何东西绝对没有意义。您是否打算改用
.then?.fail不是过滤器。 -
不幸的是,即使使用 .then,让它作为两个参数而不是数组作为第一个参数返回的唯一方法是创建一个新的 deferred。
-
示例是 then 链中函数的一部分。所以我会有像
fcn().then(fcn2).then(fcn3)...then(null, errorHandler).这样的东西 在每个fcns中我返回一个延迟的承诺,它定义了.fail,而不是在then的第二个参数中定义一个failFilter@ -
.fail中的函数是这样定义的,以便链中发生的第一个(或原始)错误在最后传递给errorHandler,而不会被then 链中的其他承诺 -
@KevinB 对此感到抱歉,你是对的,在进一步研究之后,我显然是说
.then。我想我会继续返回一个新的延迟对象。我希望有一种更优雅的方式。
标签: jquery memory callback deferred