Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
166
rated 0 times [  173] [ 7]  / answers: 1 / hits: 15364  / 9 Years ago, sat, january 9, 2016, 12:00:00

I've created many promises like that, in order to create object in my database.



var createUserPromise = new Promise(
function(resolve, reject) {
User.create({
email: '[email protected]'
}, function() {
console.log(User populated); // callback called when user is created
resolve();
});
}
);


At the end, I want call all my promises in the order I want. (because somes object depend of other, so I need to keep that order)



createUserPromise
.then(createCommentPromise
.then(createGamePromise
.then(createRoomPromise)));


So I expect to see :



User populated
Comment populated
Game populated
Room populated


Unfortunately, this messages are shuffled and I don't understand what.



Thanks


More From » node.js

 Answers
14

Looks like you understood promises wrong, re-read some tutorials on promises and this article.



As soon as you create a promise using new Promise(executor), it is invoked right away, so all your function actually are executed as you create them and not when you chain them.



createUser actually should be a function returning a promise and not a promise itself. createComment, createGame, createRoom too.



Then you will be able to chain them like this:



createUser()
.then(createComment)
.then(createGame)
.then(createRoom)


Latest versions of mongoose return promises if you don't pass callbacks, so you don't need to wrap it into a function returning a promise.


[#63787] Thursday, January 7, 2016, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
jenamackennac

Total Points: 304
Total Questions: 110
Total Answers: 107

Location: Ecuador
Member since Thu, Jun 4, 2020
4 Years ago
jenamackennac questions
Fri, Feb 18, 22, 00:00, 2 Years ago
Wed, Apr 21, 21, 00:00, 3 Years ago
Thu, Apr 1, 21, 00:00, 3 Years ago
Tue, Feb 2, 21, 00:00, 3 Years ago
;