how to wait a graphql query is finished using apollo?

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 !
nicolas_maujeanAsked:
Who is Participating?
 
nicolas_maujeanAuthor Commented:
interesting, I used watchQuery of apollo and put all in the subscribes, once all datas are loaded
1
 
leakim971PluritechnicianCommented:
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

0
 
nicolas_maujeanAuthor Commented:
used it and it did what I want
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.