Coder Social home page Coder Social logo

Comments (5)

llc1123 avatar llc1123 commented on May 31, 2024 5

I have submitted a PR #37 memoizing promises and it looks good.

from apollo-datasource-http.

bradleymorris avatar bradleymorris commented on May 31, 2024

Why is it not possible to just memoize the original promise? It seems what needs to be done is that the response Promise needs to be created and inserted into the memoization cache Prior to request execution.

That way, any subsequent queries checking the memo cache will fetch the promise and wait for the original execution to complete (and then likewise 'share' the response).

from apollo-datasource-http.

llc1123 avatar llc1123 commented on May 31, 2024

I don't think storing the promise in cache is a good idea. How do you deal with promise rejection?

@StarpTech What do you think?

from apollo-datasource-http.

bradleymorris avatar bradleymorris commented on May 31, 2024

I don't think I see the problem you're alluding to in regards to promise rejection. The memoization store is different from the 'proper' cache and nothing is serialized or written to disk with the dedicated alloc/quicklru memoization cache, as far as I am aware.

So if the promise is rejected, any executions awaiting the promise will be notified as they typically would be, even if they are late arrivers and await promise fulfillment after the promise was either fulfilled or rejected.

I could be over-simplifying something, here, but I think that the Apollo out-of-box REST data source might do something similar to avoid this problem as well.

from apollo-datasource-http.

bradleymorris avatar bradleymorris commented on May 31, 2024

@llc1123 Thank you for your time and effort on this. Hopefully it gets merged and released soon!

from apollo-datasource-http.

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.