Comments (5)
I have submitted a PR #37 memoizing promises and it looks good.
from apollo-datasource-http.
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.
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.
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.
@llc1123 Thank you for your time and effort on this. Hopefully it gets merged and released soon!
from apollo-datasource-http.
Related Issues (20)
- How to intercept HTTP request with jest? HOT 1
- requestCache.maxTtl unit HOT 1
- Make POST requests cacheable HOT 1
- `maxTtlIfError` behavior clarification. HOT 5
- Intended usage from resolver functions? HOT 3
- Request deduplication (memoization) does not occur across concurrently executing frames HOT 3
- Specific request configs don't override more general client configs.
- [QUESTION]: onRequest and query HOT 2
- Mocking of the comminucation HOT 2
- [Proposal]: Support caching responses without JSON.stringify HOT 1
- Error upon receiving a compressed response. HOT 6
- [Security] Upgrade Undici dependency to latest version
- [Performance] Using x2 to x3 more cache memory and bandwidth than apollo-datasource-rest HOT 7
- [Proposal] Make the maxTtlIfError optional HOT 1
- FormData body is being coerced to JSON
- Handling application/vnd.api+json content type
- Connection pool cache
- Return response Headers in Apollo response
- Dynamic baseURL
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apollo-datasource-http.