Это код, который я использую. currentId равно 10; Я делаю вызов службы, который имеет функцию $ http.get (для JSON), и я хочу атаковать массив длиной JSON до currentId после выполнения функции. Как мне это сделать? Есть ли какая-либо специальная функция в angularjs, которая мне помогает. Здесь я прочитал другие актуальные вопросы, но мне нужно это сделать в angularjs. Благодарю.
var currentId = 10;
console.log(currentId + ' before function'); //outputs 10
function findId(){
readJson.readJsonfun().then(function(data) {
currentId = data.length; //say data.length = 20;
return currentId;
});}
findId();
console.log(currentId + ' before function'); //should output 20?
Сохраните переменную, вызывающую беспокойство (currentID) в сервисе. В вашем сервисе это выглядит примерно так:
.service('Example', function(){
var service = this;
var currentID = null;
service.getCurrentID = function() {
return currentID;
}
service.findId(){
readJson.readJsonfun().then(function(data) {
currentId = data.length; //say data.length = 20;
});}
Затем из-за пределов службы вы можете вызвать Example.findID()
для обновления текущего идентификатора, а затем Example.getCurrentID()
для получения фактического значения
var currentId = 10;
var modifiedId1;
var modifiedId2;
console.log(currentId + ' before function call');
function findId(){
return readJson.readJsonfun().then(function(data) {
currentId = data.length;
return $q.when(currentId);
});
}
findId().then(function(id){
//first time we need it
firstFunction(currentId); //or firstFunction(id);
});
function firstFunction(id){
modifiedId1 = id * 2;
}
function secondFunction(){
return findId().then(function(id){
//second time we need it, currentId is updates
modifiedId2 = id * 4;
return $q.when();
});
}