我正在使用ES6和babel处理Angular全栈。
在我的控制器中,我有:
$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()});
似乎有效,但似乎不是一个干净的解决方案。
答案 0 :(得分:6)
您应该传递函数引用,如.then(aFunction)
而不是函数调用。目前你正在做aFunction()
正在立即调用该函数。
$onInit() {
this.$http.get('/api/example')
.then(() => {console.log("task1")})
.then(aFunction)
}
答案 1 :(得分:4)
aFunction
立即执行,其结果传递到.then()
。
应该是:.then(aFunction)
这将传递对它将自行执行的.then
的引用。