Comments (3)
Hi @Vortex375
a record's ready
event fires when the record is first loaded(asynchronous). If its data is already loaded however it is available immediately (synchronously) - as can be determined by checking the record's isReady
flag.
whenReady()
was introduced solely for the purpose of normalising these two behaviors and intentionally fires straight away when the data is already available and with a delay if it is still being loaded.
from deepstream.io-client-js.
However, having this inconsistent behavior complicates the usage of this "convenience" method, because you have to check the isReady
flag anyway, or always wrap the call to whenReady()
in a process.nextTick()
or setTimeout()
.
It also prevents the method from being used conveniently with async.waterfall()
and the like.
Most importantly, it is common design practice to have a method either always invoke its callback synchronously or asynchronously - not both. Though the behavior is somewhat documented (it states the callback can be invoked "immediately") it is not what a user would expect the method to do.
Would there be any drawback to always invoking the callback asynchronously?
from deepstream.io-client-js.
You wouldn't actually need to wrap the method into setTimeout and async.waterfall works perfectly fine with a mix of synchronous and asynchronous methods.
As mentioned, whenReady
purely exists to fire WHEN the record is ready - which might be the case already or once it received data from the server. Could you provide a concrete example that can't be solved without making the method aynchronous?
from deepstream.io-client-js.
Related Issues (20)
- Client hangs on write when no permissions available HOT 5
- dist directory/.js-file for browser is missing HOT 12
- Deepstream-client have not worked in ReactNative HOT 3
- C and Options are not exported from dist/bundle/ds.min.js HOT 1
- Problem of usage in nodejs 14.5 with the lastest version of @deepstream/[email protected] HOT 10
- Can't subscribe to a record with record.subscribe(callback) with callback being the only param because of Typescript definitions. HOT 7
- client.presence.subscribe('username', callback) not working HOT 1
- ACCEPT_TIMEOUT weired behavior HOT 4
- getting error referrence error HOT 1
- Issue an event to a user by their ID HOT 1
- In chrome, new DeepstreamClient, then the XmlHttpRequest won't work. HOT 1
- How can I make data timeout auto clear? HOT 1
- DeepstreamClient - RPC ResponseTimeout HOT 1
- Uncaught ReferenceError: Buffer is not defined HOT 6
- NextJS 13 - PNPM - bufferuntil HOT 2
- Deprecate old SDK HOT 2
- Doesn't works with React Native (Expo) With Hermes HOT 7
- Discard list still get event handler triggered HOT 1
- Record subscription after reconnect HOT 9
- Cannot use deepstream-client-js in React Native app android HOT 4
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 deepstream.io-client-js.