Закрытие веб-ресурса после продолжительного асинхронного обновления - PullRequest
0 голосов
/ 07 января 2019

Я делаю один вызов, который получает несколько GUID, используя WebAPI. Я проверяю каждый результат и обновляю записи соответственно. Все это делается асинхронно. Я не хочу, чтобы пользователь ждал обновления всех записей и просто хотел закрыть веб-ресурс. Я использую window.close(), однако это нарушает вызовы асинхронного обновления, которые были инициированы ранее. Как я могу обойти это? Вот звонки, которые я делаю:

window.opener.Xrm.WebApi.online.retrieveMultipleRecords("new_contract", "?$select=new_contractid&$filter=statecode eq 0 and statuscode eq 100000001&$top=5000")
    .then(function(results) {
        for (var i = 0; i < results.entities.length; i++) {
            var new_contractid = results.entities[i]["new_contractid"];
            var processedGuid = new_contractid.replace(/[{}]/g, "");

            var entity = {};
            entity.new_run = new Date(y).toISOString();

            window.opener.Xrm.WebApi.online.updateRecord("new_contract", processedGuid, entity)
                .then(function success(result) {
                    var updatedEntityId = result.id;
                },
                function (error) {
                    Xrm.Utility.alertDialog(error.message);
                });
        }
    }, function (error) {
        Xrm.Utility.alertDialog(error.message);
    });

Я думаю использовать вместо этого плагин из серверной части. Я не уверен, какой подход выбрать, любой вклад будет отличным!

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Я бы порекомендовал вам «Custom Action», чтобы достичь его, вызвать и забыть. Переместите туда всю логику.

Кажется, мы должны думать о пользовательских действиях как о «функциях». Эти функции могут быть определены как сочетание шагов рабочего процесса и плагинов - мы можем передавать входные параметры в настраиваемое действие и извлекать выходные параметры из настраиваемого действия. Причина, по которой мы можем тогда называть «функциями», заключается в том, что, в отличие от рабочего процесса / плагинов, мы можем фактически вызывать эти функции из других мест - мы можем вызывать их из javascripts, мы можем вызывать их из рабочих процессов, и мы можем вызывать их из плагинов.

Подробнее

0 голосов
/ 08 января 2019

Вы не можете обойти это, вы закрываете окно, в котором выполняется код.

Возможно, вам лучше использовать плагин.

...