2015-06-06 2 views
0

Я довольно новичок в обещаниях в javascript, и я все еще пытаюсь разработать лучший способ объединить обещания вместе в javascript, например.Вложенные обещания инкапсулировать общие потоки

something().then(function(result){ 
    console.log(result); 
}) 

function something(){ 
    return another().then(function(result){ 
    return "message"; 
    }) 
} 

если что-то(), а другой() возвращают обещания, будет другой() и его тогда() будет вызываться перед утверждением console.log(), то есть они будут вступать в Outter цепочку обещаний или завершит ли цепь ауттера, потому что она успешно создала внутреннюю цепь?

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

ответ

0

Внутреннее обещание будет привязано к внешнему обетованию, а внешнее обещание не будет выполнено до тех пор, пока не будет выполнено внутреннее.

Возвращение обещания от обработчика .then() автоматически связывает эту цепочку обещаний, а внешний не будет разрешен до тех пор, пока не будет разрешен внутренний. Это очень важная и полезная возможность обещаний.

Работа демо: http://jsfiddle.net/jfriend00/L6u2sw73/

+0

@analogueboy - я добавил рабочую демонстрацию. – jfriend00

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