在我的任务中,我想等待函数的异步执行,然后才输出结果。 如果我在代码中的尝试不起作用,我怎么能这样做呢?
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);
}
}