我刚刚开始学习 Angularjs,所以我可能用错了整个东西,但请纠正我。
我有以下工厂是这样的:
app.factory('MenuService',['service1','service2','service3',function(service1,service2,service3){
var var1 = [],
var2 = [],
var3 = [];
service1.getDataMethod(function(data){
// processes data and saves it in var1
});
service2.getDataMethod2(function(data)){
});
/// same goes for service3.
return {"prop2": var1, "prop2" : var2, "prop3": var3};
}])
我需要根据第一个服务返回的数据处理 service2 返回的数据,但每次我尝试访问它时,变量都是空的。
我知道函数返回一个 promise ,有没有办法告诉第二个函数等待第一个函数完成以便能够使用它带来的数据?
我希望我让自己明白了。如果我应该添加其他内容,请告诉我。
最佳答案
像这样?
service1.getDataMethod(function(data){
// processes data and saves it in var1
}).then(function(data) {
return service2.getDataMethod2(data)
})
基本上每个 promise 都有 .then()
方法。所以你可以根据需要链接它 a.then().then().then()
此外,一些 promise 实现具有方法包装器,例如 .success()
和 .error()
。这些方法的工作方式类似于 .then()
关于javascript - AngularJs - 在工厂内的多个函数之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38876306/