以下是我的情况:
我有一个“界面”,我的每个控件都用于基本的东西,其中一个是验证。
所以我有一个processValidation
函数,它贯穿该特定控件的每个传入函数。这些函数可能像isNumeric()
一样简单,也可能更复杂,需要进行Web服务调用。这些函数返回一个简单的boolean
,说明这是否通过了验证。
我需要一种通用的方法让这个调用等待它运行完成的验证。我认为这是使用延迟方法的理想场所,但我似乎无法正确使用它。
这是我到目前为止所做的:
var dfd = $.Deferred(function (dfd) {
validator.validatorFn(value, $controlContainer);
}).promise();
$.when(dfd).done(function (result) {
console.log('got here');
});
当我进入被调用的函数时,我需要一种方法来解析dfd。我猜这是我真正的问题。
思想?
修改
我尝试将dfd
传递给validatorFn并在那里解析它,但$.when
永远不会触发。
答案 0 :(得分:3)
我不确定你的流量,但为什么不让validator.validatorFn
返回延迟对象?类似的东西:
validator.validatorFn = function(value, controlContainer) {
var df = $.Deferred();
// do validation
// somewhere you call
df.resolve(result);
// or maybe df.reject(result);
return df;
};
然后:
$.when(validator.validatorFn(value, controlContainer)).done(function (result) {
console.log('got here');
});