2015-04-02 2 views
-1

Обещания сбивают с толку. Ниже, очевидно, плохо, неполно, а не то, как я действительно буду заниматься этим, но должно быть достаточно, чтобы прояснить мои вопросы.пытается понять объем вокруг обещаний

Учитывая приведенный ниже код, оператор 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); 

Точно так же, если есть обещание называют в обещание является внешний посыл (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); 

Опять же, я не ищу «правильный или лучший» способ сделать это, просто пытаюсь получить представление о потоке и объеме. Извините, что продолжаю повторять это, но я устал от того, что люди не отвечали на вопросы, заданные в loo, предлагая их советы - плохой опыт на других сайтах, надеюсь, что этого не произойдет.

+0

Проблема, с которой вы сталкиваетесь, не обещает, это асинхронный код. Я склонен отмечать это как обман http://stackoverflow.com/q/14220321/497418. – zzzzBov

+0

@zzzzBov Спасибо, это на самом деле немного очищает. задает больше вопросов, как, например, как поддерживать состояние по всей цепочке. – Ryhnn

+0

Это очень мало связано с областью видимости и имеет много общего со временем и тем, как выполняется javascript-код. Я предлагаю исследовать цикл событий javascript. здесь, я сэкономлю вам время: http://www.youtube.com/watch?v=8aGhZQkoFbQ –

ответ

2

Обещание не блокируется. Исполнение кода продолжается одновременно.

+2

«Учитывая приведенный ниже код, оператор if заблокирован до Пользователь.найти обещание разрешено? или это состояние гонки на console.log в конце? »- был вопрос. Я ответил, что он не блокируется. –

+0

Это нелогично отвечает на мой ответ. –

Смежные вопросы