]> git.ardis.lu - erc-1967-inspector/commitdiff
Add logic to abort stale requests
authorArdis Lu <ardisglu@gmail.com>
Wed, 1 May 2024 05:10:52 +0000 (22:10 -0700)
committerArdis Lu <ardisglu@gmail.com>
Wed, 1 May 2024 05:10:52 +0000 (22:10 -0700)
Requests will abort after 30 seconds or if a new lookup from the user comes in.

index.html

index 6fabb16027d91e79febe875192bf8f349bc8f2ba..22884ddb21c08a593f648961d3c90068565506d1 100644 (file)
@@ -80,6 +80,8 @@
   </main>
 
   <script type="module">
+    let controller;
+
     async function slotLookup(rpc, contract) {
       const slots = {
         // ERC-1967
       const response = await fetch(rpc, {
         method: 'POST',
         headers: { 'Content-Type': 'application/json' },
-        body: JSON.stringify(slotPayload)
+        body: JSON.stringify(slotPayload),
+        signal: AbortSignal.any([
+          AbortSignal.timeout(30000),
+          controller.signal
+        ])
       }).then(r => r.json());
 
       const output = [];
       const response = await fetch(rpc, {
         method: 'POST',
         headers: { 'Content-Type': 'application/json' },
-        body: JSON.stringify(eventPayload)
+        body: JSON.stringify(eventPayload),
+        signal: AbortSignal.any([
+          AbortSignal.timeout(30000),
+          controller.signal
+        ])
       }).then(r => r.json());
 
       const output = [];
       slotOutput.innerHTML = '';
       eventOutput.innerHTML = '';
 
+      controller?.abort(); // Abort any previous in-flight requests
+      controller = new AbortController();
       slotLookup(rpc, contract).then(arr => arr.forEach(i => slotOutput.insertAdjacentHTML('beforeend', `<p>${i.id}: ${i.data}</p>`)));
       eventLookup(rpc, contract).then(arr => arr.forEach(i => eventOutput.insertAdjacentHTML('beforeend', `<p>${i.id} (block ${i.blockNumber}): ${i.data}</p>`)));
     });
This page took 0.042057 seconds and 4 git commands to generate.