Browse Source

fix remote setInterval flake (#12265)

Samuel Attard 7 years ago
parent
commit
e8a7cc576e
1 changed files with 10 additions and 3 deletions
  1. 10 3
      spec/node-spec.js

+ 10 - 3
spec/node-spec.js

@@ -183,10 +183,17 @@ describe('node feature', () => {
 
     describe('setInterval called under Chromium event loop in browser process', () => {
       it('can be scheduled in time', (done) => {
-        let clear
-        let interval
-        clear = () => {
+        let interval = null
+        let clearing = false
+        const clear = () => {
+          if (interval === null || clearing) {
+            return
+          }
+          // interval might trigger while clearing (remote is slow sometimes)
+          clearing = true
           remote.getGlobal('clearInterval')(interval)
+          clearing = false
+          interval = null
           done()
         }
         interval = remote.getGlobal('setInterval')(clear, 10)