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);
    });
});