需要从异步函数返回一个值,当尝试将值存储在局部变量中时,它总是返回 promise 未决

问题描述

我正在使用 CRM D365,在我处理按钮的地方,我使用异步调用 Xrm.WebApi 编写了代码以同步运行,我能够使用 asycn/await 进行管理。当我将代码中的布尔值返回到另一个函数时遇到问题。它总是返回未决的承诺,但在结果中我可以看到价值。但我无法将该值存储在另一个函数的局部变量中。请找到我的代码

正如所说,我在函数结果中得到真/假值:validationForPackagingStructure 但该值没有存储在 GlobalNullCheck 变量中。当我尝试重新运行此值时,它的承诺未决或未定义

我想从这个函数返回这个值,因为我有基于这个返回值的其他验证。这里有任何帮助

    var returnValueFunction = function (executionContext) {
        var formContext = executionContext.getFormContext();
        var GlobalNullCheck;
        try {
            var ValidateFlag = validationForPackagingStructure(formContext).then(results => {
                GlobalNullCheck = results;
            });
        }
        catch {
            console.log("Error");
        }
        var Flag = GlobalNullCheck;
    };

    var validationForPackagingStructure = async function (formContext) {
        var formContext = formContext;
        var CurrentRecordId = formContext.data.entity.getId().replace('{','').replace('}','');
        var CurrentEntityName = formContext.data.entity.getEntityName();
        var nullCheckFalg = false;
        var marketingResults = await Xrm.WebApi.retrieveRecord(CurrentEntityName,CurrentRecordId,"?$select=_new_marketing_value&$expand=new_Marketing($select=new_requesttype)");
        var RequestType = marketingResults.new_Marketing.new_requesttype;
        var uomresults = await Xrm.WebApi.retrieveMultipleRecords("new_unitofmeasure","?$select=_new_pum_value&$expand=new_new_unitofmeasure_new_fileattachments($select=new_name)&$filter=_new_pum_value eq " + CurrentRecordId);
        for (var i = 0; i < uomresults.entities.length; i++) {
            var NumberOfAttachments = uomresults.entities[0].new_new_unitofmeasure_new_fileattachments.length;
            if (RequestType == 100000000 || RequestType == 100000001) {
                if (NumberOfAttachments < 1) {
                    var message = "Packaging Structure Inputs records should contain at least one Attachment";
                    var level = "ERROR";
                    var uniqueId = "PackAttachID";
                    formContext.ui.setFormNotification(message,level,uniqueId);
                    nullCheckFalg = true;
                    return nullCheckFalg;
                }
                if (NumberOfAttachments > 1) {
                    formContext.ui.clearFormNotification("PackAttachID");
                }
            }
        }
        return nullCheckFalg;
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)