1

Ajax 呼び出しを使用して CRM レコードを取得しようとしていました。

function RetrieveCrmRecords(entName, fields, filter, callback, orderby, errcallback) {
    ///<summary>
    /// function to Retrieve Multiple CRM records.
    ///</summary>
    //debugger;
    var async = !!callback;

    var setEntityName = entName + 'Set';
    var _callback = callback;

    filter = (filter) ? "&$filter=" + filter : '';

    var query1 = CrmServerUrl + ODATA + "/";
    var query2 = setEntityName + "()" + "?";
    var queryUrl = query1 + query2;

    if (fields != null) queryUrl += "$select=" + fields.join(',');
    if (orderby != null) {
        if (fields != null) {
            queryUrl += '&';
        }
        queryUrl += "$orderby=" + orderby;
    }
    queryUrl += filter;

    var performRequest = function (queryUrl, fnCallback) {
        var async = !!fnCallback;
        var opts = { url: queryUrl }

        return _makeRequest(opts, async, function (data) {
            var nextData = data.__next || null;
            var resultsData = data.results || data;
            var responseData = { 'results': resultsData, 'next': nextData }

            if (nextData) {
                responseData.LoadNext = function (callback) {
                    return performRequest(nextData, callback);
                };
            }

            if (async) {
                fnCallback(responseData);
            }
            else {
                return responseData;
            }
        }, errcallback);
    };

    return performRequest(queryUrl, callback);
}

私は ajax 呼び出しについてあまり考えていないので、この関数を非同期にするのは難しいです。

専門家は、この関数が同期的であることを理解するのを手伝ってください var async = !!callback;

この行の代わりに私が書いた場合var async=true;、この関数を非同期にすることはできますか?

前もって感謝します。

4

1 に答える 1