how to wait a graphql query is finished using apollo?

nicolas_maujean
nicolas_maujean used Ask the Experts™
on
I have the following code :

  ngOnInit() {

    this.data = this.apollo.query({ query: ResidentQuery }).subscribe(({data, loading}) => {
      this.data = data;
      this.loading = loading;
    });

    if (!this.loading) {
      // using this.data
    }
   }
I want data to be loaded before processed themm after the (!this.loading). It is not the case as loading is asynchronous. How I can wait the data is loaded before using them ?

I am making a graphql query using apollo client. ResidentQuery is a string containing the graphql query.

Thank you for your feedbacks !
Comment
Watch Question

Do more with

Expert Office
EXPERT OFFICE® is a registered trademark of EXPERTS EXCHANGE®
leakim971Multitechnician
Top Expert 2014

Commented:
What about :
ngOnInit() {

	var p = new Promise((resolve, reject) => {
		this.data = this.apollo.query({ query: ResidentQuery }).subscribe(({data, loading}) => {
			resolve(data,loading);
		});
	});

	this.loading = loading;

	p.then((_data, _loading) => {
		this.loading = !loading;
		// using _data
	});

}

Open in new window

interesting, I used watchQuery of apollo and put all in the subscribes, once all datas are loaded

Author

Commented:
used it and it did what I want

Do more with

Expert Office
Submit tech questions to Ask the Experts™ at any time to receive solutions, advice, and new ideas from leading industry professionals.

Start 7-Day Free Trial