编程语言
首页 > 编程语言> > javascript-延迟函数解析

javascript-延迟函数解析

作者:互联网

这是我的情况:

我有一个“界面”,我的每个控件都用于基本事物,其中之一是验证.

因此,我有一个processValidation函数,该函数遍历该特定控件的每个传入函数.这些函数可能像isNumeric()一样简单,或者更复杂,需要进行Web服务调用.这些函数返回一个简单的布尔值,说明是否通过了验证.

我需要一种通用方法来让此调用等待其运行完成的验证.我认为这是使用Deferred方法的理想之地,但我似乎无法正确地做到这一点.

这是我到目前为止的内容:

var dfd = $.Deferred(function (dfd) {
            validator.validatorFn(value, $controlContainer);
        }).promise();

        $.when(dfd).done(function (result) {
            console.log('got here');
        });

当我进入被调用的函数时,我需要一种解决dfd的方法.我想那是我真正的问题.

有什么想法吗?

编辑:
我尝试将dfd传递给validatorFn并在那里解析它,但是$.when从不触发.

解决方法:

我不确定您的流程,但是为什么不让validateator.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');
});

DEMO

标签:deferred,javascript,jquery
来源: https://codeday.me/bug/20191208/2089071.html