Javascript 如何将$PROMITE返回的数据分配给全局变量
我有两个服务,Javascript 如何将$PROMITE返回的数据分配给全局变量,javascript,angularjs,promise,Javascript,Angularjs,Promise,我有两个服务,service1和service2,我想在service2中调用service1的方法 理想情况下,我希望将从service1.getMethod()返回的数据分配给声明为var result=[]的全局变量 代码如下: 服务1 服务2 因此,理想情况下,我希望在result中使用service2的其他函数中的内容,即result[0]。name等。我不确定我所做的是否正确 请提供一个plunker演示或代码片段示例,如果对某些内容不确定,请在下面写下评论 谢谢 您不能像正在尝试的
service1和service2
,我想在service2
中调用service1
的方法
理想情况下,我希望将从service1.getMethod()
返回的数据分配给声明为var result=[]
的全局变量
代码如下:
服务1
服务2
因此,理想情况下,我希望在result
中使用service2的其他函数中的内容,即result[0]。name
等。我不确定我所做的是否正确
请提供一个plunker演示或代码片段
示例,如果对某些内容不确定,请在下面写下评论
谢谢 您不能像正在尝试的那样使用异步代码<代码>结果
变量在您尝试使用它时还没有填充。相反,您也应该做出getMethod2
返回承诺,并使用其然后方法:
.factory('service2', function (dependencies...) {
var getMethod2 = function () {
return Service1.getMethod1();
};
// RUN METHOD
getMethod2().then(function(result) {
console.log(result);
});
});
您还可以缓存返回的数据:
.factory('service2', function (dependencies...) {
var result;
var getMethod2 = function () {
return result ? $q.when(result) : Service1.getMethod1().then(function(data) {
result = data;
return result;
});
};
// RUN METHOD
getMethod2().then(function(result) {
console.log(result);
});
});
是否有不同的方法来实现以某种方式将返回的数据存储到对象数组中,以便我可以在整个服务中使用它?当然可以缓存返回的值。
.factory('service2', function (dependencies...) {
var getMethod2 = function () {
return Service1.getMethod1();
};
// RUN METHOD
getMethod2().then(function(result) {
console.log(result);
});
});
.factory('service2', function (dependencies...) {
var result;
var getMethod2 = function () {
return result ? $q.when(result) : Service1.getMethod1().then(function(data) {
result = data;
return result;
});
};
// RUN METHOD
getMethod2().then(function(result) {
console.log(result);
});
});