我有一个变量name
,它有一个初始值,稍后会用它来返回一个获取的值。在我的提取期间,我尝试使用console.log显示我的变量的新值并且正常工作。但是,为什么当我尝试返回更新后的变量时,它会返回原始值,即" initialValue":
return function(item) {
var name = "initialValue";
InquiryService.searchLocalHeader(item).then(function(result) {
name = result[0].name;
console.log(name);
})
return name;
}
有没有办法可以保留我指定的最新价值?谢谢!
答案 0 :(得分:0)
您的函数正在调用您的服务函数 - searchLocalHeader
,当服务忙于获取数据时,该函数已到达其结尾并返回初始值。
一个解决方案可能就是这样:
function myFunc(item) {
var name = "initialValue";
InquiryService.searchLocalHeader(item).then(function(result) {
name = result[0].name;
console.log(name);
return name; // returns latest value
}, function(error) {
return name; // in case of error -- returns the initial value
})
}
详细了解承诺:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise
答案 1 :(得分:0)
尝试返回当时的功能。它应该是正确的价值。
angular.module('myApp', [])
.filter('customFilter', ['someService', function (someService) {
function customFilter(input) {
// manipulate input with someService
input += someService.getData();
return input;
}
customFilter.$stateful = true; // this line makes it stateful
return customFilter;
}]);
答案 2 :(得分:0)
您需要添加$ state = true
yourServiceName.$stateful = true
return yourServiceName;