为了在数据库中创建对象,我已经创建了许多许诺。
var createUserPromise = new Promise( function(resolve, reject) { User.create({ email: 'toto@toto.com' }, function() { console.log("User populated"); // callback called when user is created resolve(); }); } );
最后,我要按我想要的顺序履行所有诺言。(因为somes对象依赖于其他对象,所以我需要保持该顺序)
createUserPromise .then(createCommentPromise .then(createGamePromise .then(createRoomPromise)));
所以我希望看到:
User populated Comment populated Game populated Room populated
不幸的是,这些消息被打乱了,我不明白。
谢谢
看起来您理解了Promise错误,请重新阅读有关Promise和本文的一些教程。
使用创建承诺后new Promise(executor),它会立即被调用,因此所有函数实际上都是在创建它们时执行的,而不是在链接它们时执行的。
new Promise(executor)
createUser实际上应该是一个返回承诺而不是承诺本身的函数。createComment,createGame,createRoom太。
createUser
createComment
createGame
createRoom
然后,您将能够像这样将它们链接起来:
createUser() .then(createComment) .then(createGame) .then(createRoom)
如果您不传递回调,则最新版本的猫鼬会返回promise,因此您无需将其包装到一个返回promise的函数中。