async constructor functions in TypeScript?

前端 未结 8 1812
青春惊慌失措
青春惊慌失措 2020-12-13 05:43

I have some setup I want during a constructor, but it seems that is not allowed

Which means I can\'t use:

How else should I do this?

<
8条回答
  •  醉梦人生
    2020-12-13 06:01

    Or you can just stick to the true ASYNC model and not overcomplicate the setup. 9 out of 10 times this comes down to asynchronous versus synchronous design. For example I have a React component that needed this very same thing were I was initializing the state variables in a promise callback in the constructor. Turns out that all I needed to do to get around the null data exception was just setup an empty state object then set it in the async callback. For example here's a Firebase read with a returned promise and callback:

            this._firebaseService = new FirebaseService();
            this.state = {data: [], latestAuthor: '', latestComment: ''};
    
            this._firebaseService.read("/comments")
            .then((data) => {
                const dataObj = data.val();
                const fetchedComments = dataObj.map((e: any) => {
                    return {author: e.author, text: e.text}
                });
    
                this.state = {data: fetchedComments, latestAuthor: '', latestComment: ''};
    
            });
    

    By taking this approach my code maintains it's AJAX behavior without compromising the component with a null exception because the state is setup with defaults (empty object and empty strings) prior to the callback. The user may see an empty list for a second but then it's quickly populated. Better yet would be to apply a spinner while the data loads up. Oftentimes I hear of individuals suggesting overly complicated work arounds as is the case in this post but the original flow should be re-examined.

提交回复
热议问题