From 44e9ef0ea9d43fd7ed9ab1b7c5719fcb2403cbed Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Mar 2021 10:53:37 +0800 Subject: [PATCH 1/2] Provide a option to cancel previous request. --- .../datatables/datatables-extensions.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index 3a254f4b5d..edead2f66b 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -325,7 +325,7 @@ var abp = abp || {}; * AJAX extension for datatables * *************************************************************************/ (function () { - datatables.createAjax = function (serverMethod, inputAction, responseCallback) { + datatables.createAjax = function (serverMethod, inputAction, responseCallback, cancelPreviousRequest) { responseCallback = responseCallback || function(result) { return { recordsTotal: result.totalCount, @@ -333,10 +333,11 @@ var abp = abp || {}; data: result.items }; } + var promise = null; return function (requestData, callback, settings) { var input = typeof inputAction === 'function' ? inputAction(requestData, settings) - : typeof inputAction === 'object' + : (typeof inputAction === 'object' && inputAction) ? inputAction : {}; //Paging @@ -368,7 +369,12 @@ var abp = abp || {}; } if (callback) { - serverMethod(input).then(function (result) { + if(cancelPreviousRequest && promise && promise.jqXHR) { + promise.jqXHR.abort(); + } + promise = serverMethod(input); + promise.then(function (result) { + promise = null; callback(responseCallback(result)); }); } From e9be73072f88522aab22075f4f271183ea4b6bee Mon Sep 17 00:00:00 2001 From: maliming Date: Tue, 23 Mar 2021 14:59:45 +0800 Subject: [PATCH 2/2] Always set promise to null. --- .../datatables/datatables-extensions.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js index edead2f66b..c625ac2178 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js +++ b/framework/src/Volo.Abp.AspNetCore.Mvc.UI.Theme.Shared/wwwroot/libs/abp/aspnetcore-mvc-ui-theme-shared/datatables/datatables-extensions.js @@ -373,8 +373,9 @@ var abp = abp || {}; promise.jqXHR.abort(); } promise = serverMethod(input); - promise.then(function (result) { + promise.always(function () { promise = null; + }).then(function (result) { callback(responseCallback(result)); }); }