I have an action creator which does an expensive calculation and dispatches an action every time the user inputs something (basically real time updating). However, if the user inputs multiple things, I don't want the prior expensive calculations to fully run. Ideally I want to be able to cancel execution of the previous calculations and just do the current one.
How to cancel execution of a previous action upon a new action?
905 Views Asked by Daniel At
2
There are 2 best solutions below
0

Another potential solution would be to make use of redux-saga. There's a very useful helper called takeLatest
that seems to do what you're trying to accomplish.
Related Questions in JAVASCRIPT
- kendo - datasource - parameterMap does not bind parameters
- Creating Odata Web API application without Entity Framework
- ASP.NET Odata Web API Composable function issue
- What the format should look like for a Function Import Response which returning a simple type?
- Web API: Odata route always returning a 404 response
- Odata post always returns "HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed,"
- solution architecture for an OData / Web API based .Net project
- WCF Data Services, WindowsAzure.Storage and Microsoft.Data.OData version nightmare
- How to wisely combine shingles and edgeNgram to provide flexible full text search?
- Connect to SharePoint Lists with OData
Related Questions in REACTJS
- kendo - datasource - parameterMap does not bind parameters
- Creating Odata Web API application without Entity Framework
- ASP.NET Odata Web API Composable function issue
- What the format should look like for a Function Import Response which returning a simple type?
- Web API: Odata route always returning a 404 response
- Odata post always returns "HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed,"
- solution architecture for an OData / Web API based .Net project
- WCF Data Services, WindowsAzure.Storage and Microsoft.Data.OData version nightmare
- How to wisely combine shingles and edgeNgram to provide flexible full text search?
- Connect to SharePoint Lists with OData
Related Questions in REDUX
- kendo - datasource - parameterMap does not bind parameters
- Creating Odata Web API application without Entity Framework
- ASP.NET Odata Web API Composable function issue
- What the format should look like for a Function Import Response which returning a simple type?
- Web API: Odata route always returning a 404 response
- Odata post always returns "HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed,"
- solution architecture for an OData / Web API based .Net project
- WCF Data Services, WindowsAzure.Storage and Microsoft.Data.OData version nightmare
- How to wisely combine shingles and edgeNgram to provide flexible full text search?
- Connect to SharePoint Lists with OData
Related Questions in REDUX-THUNK
- kendo - datasource - parameterMap does not bind parameters
- Creating Odata Web API application without Entity Framework
- ASP.NET Odata Web API Composable function issue
- What the format should look like for a Function Import Response which returning a simple type?
- Web API: Odata route always returning a 404 response
- Odata post always returns "HTTP 404. The resource you are looking for (or one of its dependencies) could have been removed,"
- solution architecture for an OData / Web API based .Net project
- WCF Data Services, WindowsAzure.Storage and Microsoft.Data.OData version nightmare
- How to wisely combine shingles and edgeNgram to provide flexible full text search?
- Connect to SharePoint Lists with OData
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular # Hahtags
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
There's no built-in feature to cancel a Promise in an asynchronous action. You can try manually implement cancellation if you're using AJAX requests, however, it's not possible if you're using Fetch API (there's an ongoing discussion about adding this feature here).
What I would suggest to do, however, instead of dispatching an expensive action every time a user types in something in a field, apply debouncing function to your event handling function. This function is available in many libraries:
This would delay dispatching an action until a certain number of milliseconds have elapsed since the last time this action was dispatched. It will drastically reduce a number of heavy asynchronous operations since the action will be dispatched, let's say, every 500ms or 1s depend on your configuration instead of on every change event.
An example of implementation with lodash: