Giter VIP home page Giter VIP logo

Comments (3)

dumbmatter avatar dumbmatter commented on May 29, 2024 1

Hopefully this is fixed in v3.1.4. Please reopen if not.

from fakeindexeddb.

dumbmatter avatar dumbmatter commented on May 29, 2024

Switching from setImmediate to process.nexTick does make a few of the tests fail. Not sure why, I haven't had a chance to look into it further. But IIRC it was difficult to get all of the asynchronous stuff working correctly, and I think even now there are some rare edge cases where it doesn't work quite right. Very finicky stuff. So I'm a little scared to change it :)

from fakeindexeddb.

julienw avatar julienw commented on May 29, 2024

I tried using queueMicrotask but got a few timeout in tests (I guess the same ones you got with process.nextTick). I think the difference is that setImmediate is a macrotask, but process.nextTick and queueMicrotask queue microtasks, which behave differently.

I also tried using setTimeout and with this, all tests are passing. The downside of setTimeout is that in browsers it may be delayed more, especially when nested. But is that a problem for this package, as it will run in a test environment? That would remove the need of the polyfill for setImmediate, reducing the complexity.

But anyway this doesn't solve the problem with jest's fake timers, because they also mock setTimeout obviously. Instead of calling setImmediate or setTimeout, we'd need to call the real functions, probably using some magic with jest functions like outlined above.

For now I'm not blocked anymore in our project, as I removed the fake timers from the tests that were using this library.

from fakeindexeddb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.