> 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.

Reply via email to