gpt4 book ai didi

javascript - 如何将 $promise 返回的数据分配给全局变量

转载 作者:搜寻专家 更新时间:2023-11-01 04:08:40 24 4
gpt4 key购买 nike

我有两个服务,service1 and service2 , 我想调用 service1 的方法进入service2 .

理想情况下,我想分配来自 service1.getMethod() 的返回数据声明为 var result = [] 的全局变量.

代码如下:

服务1

.factory('service1', function (dependencies...) {
var getMethod1 = function () {
...//making http get call
return deferred.promise();
};

return {
getMethod1 : getMethod1
};
});

服务2

.factory('service2', function (dependencies...) {
var result = [];

var getMethod2 = function () {
Service1.getMethod1().then(function (data) {
result = data;
});

//RUN METHOD
getMethod2();

//Here ideally, I would like result to contain `[object, object, object]`
console.log(result); //instead it prints `undefined`
});

理想情况下,我想使用 result 中的内容在 service2's其他 functions i.e. result[0].name等。不确定我在做什么是正确的方法。

请提供 plunker demo or code snippet例如,如果不确定某事,请在下面写下评论。

谢谢!

最佳答案

您不能像您尝试的那样使用异步代码。 result 变量在您尝试使用时尚未填充。相反,你应该让 getMethod2 也返回 promise,并使用它的 then 方法:

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

关于javascript - 如何将 $promise 返回的数据分配给全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27178065/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com