2016-08-08 3 views
2

Я работаю над Угловым полным стеком с ES6 и babel.Заказ обещаний исполняется в AngularJs

В мой контроллер, у меня есть:

$onInit() { 
    this.$http.get('/api/example') 
     .then(() => {console.log("task1")}) 
     .then(() => {console.log("task2")}) 
} 

В результате консоль это то, что я хочу:

task1 
task2 

Но когда я пытаюсь реорганизовать свой код:

$onInit() { 
    this.$http.get('/api/example') 
     .then(() => {console.log("task1")}) 
     .then(aFunction()) 
} 

aFunction() { 
    console.log("task2") 
} 

консольный результат:

task2 
task1 

Почему это происходит?

Nb: .then(() => {this.aFunction()});, похоже, работает, но не кажется, что это чистое решение.

ответ

6

Вы должны передать функцию, например .then(aFunction), вместо вызова функции. В настоящее время вы делаете aFunction(), который немедленно вызывает эту функцию.

$onInit() { 
    this.$http.get('/api/example') 
     .then(() => {console.log("task1")}) 
     .then(aFunction) 
} 
4

aFunction Выполняется немедленно и его результат передается в .then().

Оно должно быть: .then(aFunction)

Это передаст ссылку на .then которой он будет выполнять сам.

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