2

I am afraid what I am doing is completely wrong.

Is it okay to resolve() or reject() from withing a promise chain IN a promise.

// Insert a new user by details into database
insert: function(username, name, email, gender, birthday, other) {
    return new Promise(function(resolve, reject) {

        // Base structure
        var new_user = {
            username: username,
            name: name,
            email: email,
            gender: gender,
            birthday: birthday
        };

        // Merge other data with base structure
        if(other != undefined) {
            new_user = _.merge(new_user, other);
        }

        var new_user_model = new UserModel(new_user);
        new_user_model.saveAsync(function(user) {
            return resolve(user); // Safe to resolve from inside a promise?
        });

        // OR... should I do it like this?
        var user = new_user_model.saveAsync(function(user) {
            return user;
        });
        return resolve(user);
    });
}

1 Answers1

5

You actually don't need to resolve or reject here. You can just return the promise given to you from new_user_model.saveAsync: there's no need to wrap it in a new one. Try the following.

// Insert a new user by details into database
insert: function(username, name, email, gender, birthday, other) {

    // Base structure
    var new_user = {
        username: username,
        name: name,
        email: email,
        gender: gender,
        birthday: birthday
    };

    // Merge other data with base structure
    if(other != undefined) {
        new_user = _.merge(new_user, other);
    }

    var new_user_model = new UserModel(new_user);
    return new_user_model.saveAsync();

}
Mike
  • 920
  • 1
  • 9
  • 11