In-order responses for asynchronous work
Sometimes we end up executing some asynchronous function several times in a row, but we need only the results of the last call. The difficulty is that some earlier invocations may finish after the latest. I encounter this most often in Javascript, when I call an API in response to ongoing user input, like for looking up an address. While debouncing can help reduce this problem (and should be done anyway to lighten the load), it does not eliminate the problem.
A simple way to do this is to use a counter to keep track of each request, and only process a response if it's newer than any other processed so far.
Continue reading "In-order responses for asynchronous work"