如何使用延迟对象始终获得同步执行功能?

时间:2016-11-12 12:42:34

标签: javascript typescript jquery-deferred deferred deferred-execution

在我的任务中,我想等待函数的异步执行,然后才输出结果。 如果我在代码中的尝试不起作用,我怎么能这样做呢?

    CanPrintVS(): boolean {
        var result = false;
  

//此时我想等待同步执行功能   CheckRefLink:

        $.when(this.CheckRefLink().then((r: boolean) => { result = r; }));
        return result;
    }

    private CheckRefLink() {
        var def = $.Deferred();
        if (this.DOC_RC.KIND_DOC == 3) {
            var reflinks = this.DOC_RC.REF_LINK_List;

            var waitRefs = $.Deferred();
  

// 1)在第一种情况下 - 只是一个解析值:

            if (reflinks)
                waitRefs.resolve(reflinks);
  

// 2)或等待执行:

            else
                ds.loadT({ REF_LINK: criteries({ISN_REF_DOC: this.ISN_DOC})
            }).promise().then(r => { waitRefs.resolve(r.result); });

            waitRefs.done((ns) => {
                    var linkcl = dm.LINK_CL[ns.ISN_CLLINK];
                    return def.resolve(linkcl && linkcl.LINK_DIR == 1);
            });
        }
        return def.resolve(false);
    }
}

0 个答案:

没有答案