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.
