首页 > 解决方案 > 将 sdk.rest multiretrieve 传递给 Promise

问题描述

我的代码有什么问题?privateConfigurationPromise 总是返回“待处理”。在阅读之前,我必须等待多重检索结果。我不知道出了什么问题。我也尝试过使用计时器,但答案始终是“待定”。向我解释我做错了什么。

    function isEmpty(obj) {
            if (obj == null) return true;

            if (obj.length > 0)    return false;
            if (obj.length === 0)  return true;

            if (typeof obj !== "object") return true;

            for (var key in obj) {
                if (hasOwnProperty.call(obj, key)) return false;
            }

            return true;
        }

    function retrieveMultipleWithPromise() {
        var entityName = "privateconfiguration";
        var fieldValue = "value";
        var fieldName = "name";
        var fieldNameBaseValue = "pc_mvc_base";
        var fieldNameControllerValue = "pc_mvc_books";
        var option = "$select=" + fieldValue + "&$filter=" + fieldName + " eq '" + fieldNameBaseValue + "' or " + fieldName + " eq '" + fieldNameControllerValue + "'";

        return new Promise(function (resolve, reject) {
            var result = SDK.REST.retrieveMultipleRecords(
                entityName,
                option,
                function (result) {
                },
                function (error) {
                    errorHandler(error);
                },
                function () {
                }
            );
            if(!(isEmpty(result))){
                resolve(result);
            }
            else{
                reject(result);
            }
        });
    }

    var iframe = Xrm.Page.getControl("IFRAME_MVCApp");
    //retrieve delle due private conf.
    var privateConfigurationPromise = retrieveMultipleWithPromise()
        .then(result => result.map(function (item) { return item.ava_value; }).join(""))
        .catch(error => console.log(error));

};

标签: javascriptpromise

解决方案


推荐阅读