我已经和这个问题争了几个小时了,我在node.js中运行的js代码在下面。
var app = angular.module('App', []);
app.service('DataSet1', function(){
this.initialize = function(){
//.. returns promiese
}
});
app.service('DataSet2', function(){
this.initialize = function(){
//.. returns promiese
}
});
app.service('DataSet3', function(){
this.initialize = function(){
//.. returns promiese
}
});
我认为因为变量已经由函数exec创建的父作用域声明,所以我可以为它赋值。有人可以解释我做错了什么以及访问超出范围变量的正确方法吗?
答案 0 :(得分:3)
您的问题不是范围,而是同步性问题。
在Node.js中,大多数函数默认是异步的,这意味着无论这些函数是否实际运行完毕,程序的执行都会继续。
所以会发生在传递给console.log(exampleVar)
的函数之前执行的最后exec
有时间执行(因为IO操作通常比执行缓存的JS代码慢)。
请参阅this primer以获得更深入的解释。