Just wrap it in a "factory". I usually call it whatever.create().

Then use with it whatever flow control thingy you prefer. callbacks,
generator/suspend, etc.

On Mon, Mar 9, 2015 at 4:49 AM, Aria Stewart <[email protected]> wrote:

>
> > On 6 Mar 2015, at 23:19, Louis Sherren <[email protected]> wrote:
> >
> > I have to do some async call in some constructor, like retrieve data
> from mysql.
> > I'm trying to use Promise to handle the 'async' thing but I find it
> impossible because:
> >
> > I must return Promise object in constructor but the constructor is
> called by 'new' key word, there shouldn't be any 'return' in constructor.
> >
> > Is there some way to do this piece of work?
> > Now I just add another function like 'init' to do the async part, can I
> do it in constructor ?
>
> There's two things you can do: use a plain function and call your
> constructor internally:
>
>     function createThing(args) {
>         return doPrep.then(function (prepdata) { return new
> Thing(prepdata, args); })
>     }
>
> Or do the prep work in the constructor, but have the object not fully
> ready to use -- which if you think of promises as future values and not
> flow control, makes perfect sense:
>
>     function Thing(args) {
>         this.prep = doPrep();
>     }
>
>      /* Later */
>      var thing = new Thing();
>      thing.prep.then(function (prepdata) {  ... })
>
> What is the actual task you're trying to accomplish?
>
> Aria
>
> --
> Job board: http://jobs.nodejs.org/
> New group rules:
> https://gist.github.com/othiym23/9886289#file-moderation-policy-md
> Old group rules:
> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
> ---
> You received this message because you are subscribed to the Google Groups
> "nodejs" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/nodejs/767C6524-80A3-40E3-86D2-21F870810C52%40dinhe.net
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/CABg07fsdUhOBe4zABMp-NAhqnvcrtdQWDkL9C7FefdfqiknNCQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to