Comments (1)
The way to handle this is described in the FastBoot documentation: delaying-the-server-response
If we take the example from the ember-parachute README, integration with FastBoot could be implemented like this:
import Route from '@ember/routing/route';
import { inject } from '@ember/service';
import RSVP from 'rsvp';
export default Route.extend({
fastboot: inject(),
afterModel() {
if (typeof FastBoot !== 'undefined') {
const defer = RSVP.defer();
this.controllerFor('posts').set('deferredRender', defer);
this.get('fastboot').deferRendering(defer.promise);
}
},
});
import Controller from '@ember/controller';
import QueryParams from 'ember-parachute';
const myQueryParams = new QueryParams({…});
export default Controller.extend(myQueryParams.Mixin, {
setup({ queryParams }) {
this.fetchData(queryParams).catch((error) => {
if (typeof FastBoot !== 'undefined') {
this.get('deferredRender').reject();
throw error;
}
});
},
queryParamsDidChange({ shouldRefresh, queryParams }) {
if (shouldRefresh) {
this.fetchData(queryParams).catch((error) => {
if (typeof FastBoot !== 'undefined') {
this.get('deferredRender').reject();
throw error;
}
});
}
},
async fetchData(queryParams) {
// fetch some data, e.g.
// let posts = await this.get('store').query('post', queryParams);
// this.set('posts', posts);
if (typeof FastBoot !== 'undefined') {
this.get('deferredRender').resolve();
}
},
}
Question is: how can we make it easier for users to integrate with FastBoot?
First, we should add an example to the README.
But would it be possible to somehow automate that integration? Most likely not without changing this addon's API, since ember-parachute doesn't handle any data fetching on its own.
from ember-parachute.
Related Issues (20)
- Using this addon inside of an engine causes Route to be reopened twice HOT 1
- Exported service doesn't exist HOT 1
- Provide a way to get serialized QPs from the controller HOT 9
- Accessing the controller / services HOT 17
- Preventing a query param change HOT 3
- Upcoming RFC281 "native ES5 getters" incompatibility
- Setup hook not getting query params present in URL HOT 1
- Dynamically set query params HOT 5
- replaceRoute in setup sends incorrect event to queryParamsDidChange
- I'm an idiot - can you link code for the example HOT 4
- Support deserializing duplicate query params
- Ember 3.6 HandlerInfos Removal deprecation
- NAME_KEY is deprecated HOT 2
- Using key as reference to a service
- Changing query in setup hook HOT 2
- Unexpected values of queryParams on a controller using decorators
- Properties decorated with queryParam are undefined HOT 3
- Assertion Failed: Attempting to lookup an injected property on an object without a container HOT 1
- Uncaught TypeError: Cannot assign to read only property 'foostate' of object '[object Object]'
- Deprecation warning `deprecated-run-loop-and-computed-dot-access` blocking Ember 4 upgrade
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 ember-parachute.