Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 延迟函数解析_Javascript_Jquery_Deferred - Fatal编程技术网

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');
});