Javascript 延迟函数解析
以下是我的情况: 我有一个“接口”,我的每个控件都使用它来实现基本功能,其中之一就是验证 因此,我有一个Javascript 延迟函数解析,javascript,jquery,deferred,Javascript,Jquery,Deferred,以下是我的情况: 我有一个“接口”,我的每个控件都使用它来实现基本功能,其中之一就是验证 因此,我有一个processValidation函数,它运行于特定控件的每个传入函数中。这些函数可能像isNumeric()一样简单,也可能更复杂,需要一个webservice调用。这些函数返回一个简单的布尔值,说明此验证是否通过 我需要一种通用的方法让这个调用等待它运行的验证完成。我认为这是一个使用延迟方法的完美地方,但我似乎无法正确地使用它 以下是我到目前为止的情况: var dfd = $.Defer
processValidation
函数,它运行于特定控件的每个传入函数中。这些函数可能像isNumeric()
一样简单,也可能更复杂,需要一个webservice调用。这些函数返回一个简单的布尔值
,说明此验证是否通过
我需要一种通用的方法让这个调用等待它运行的验证完成。我认为这是一个使用延迟方法的完美地方,但我似乎无法正确地使用它
以下是我到目前为止的情况:
var dfd = $.Deferred(function (dfd) {
validator.validatorFn(value, $controlContainer);
}).promise();
$.when(dfd).done(function (result) {
console.log('got here');
});
当我进入被调用的函数时,我需要一种解决dfd的方法。我想这才是我真正的问题
想法
编辑:
我尝试将
dfd
传递给验证器fn,并在那里解析它,但是$。当从未触发时。我不确定您的流,但为什么不让验证器fn
返回延迟对象?比如:
validator.validatorFn = function(value, controlContainer) {
var df = $.Deferred();
// do validation
// somewhere you call
df.resolve(result);
// or maybe df.reject(result);
return df;
};
然后:
这实际上是完美的。我没想到:)谢谢sir@Mike:欢迎:)我知道延迟对象可能很难理解(至少对我来说是这样;))我想我确实理解了它们。。。然后发生了这样的事情:)
$.when(validator.validatorFn(value, controlContainer)).done(function (result) {
console.log('got here');
});