承诺令人困惑。下面显然是不好的,不完整的,而不是我实际上会怎么做,但应该足以澄清我的问题。
鉴于以下代码,if语句是否被阻止,直到User.find承诺得到解决?或者它最终是console.log的竞争条件?
var user = null;
if (....) {
User.find(123)
.on("success", function(u) {
user = u;
});
}
else {
// do something else to user
}
console.log(user.Name);
同样,如果在promise中调用了promise,那么外部promise(User.find)会被阻塞,直到内部的(Posts.findAll)被解析?我再次知道这是糟糕的代码,只是试图弄清楚我脑子里的流量和范围。
var postlist = [];
User.find(123)
.on("success", function(user) {
Posts.findAll({where:{user_id:user.id}})
.on("success", function(posts) { postlist = posts});
});
console.log(postlist);
同样,我并不是在寻找“正确或最好”的方法,只是试图掌握流量和范围。很抱歉继续重复它,但我已经厌倦了那些没有回答提出建议的问题的人 - 在其他网站上的糟糕经历,希望不会在这里发生。
答案 0 :(得分:2)
承诺不会阻止。代码执行同时继续。