ben ayrı değişkene işlevine bir başvuru kaydetmek SÜRECE, bulunmazsa bir işlevi, yürütmeye çalışıyorum:kapsamı
function updateCheck() {
if (this.isNewVersionNeeded()) {
var buildFunc = this.buildObject();
this.updateBiography().then(function(){
buildFunc();
})
}
};
buildObject işlevi, yalnızca this.updateBiography (async işlevi) çalıştırılmadan önce kaydeder ve onu (buildFunc) içine kaydettiğim değişken aracılığıyla çalıştırırsam çalışır. Aşağıdaki işe ETMEZ:
function updateCheck() {
if (this.isNewVersionNeeded()) {
this.updateBiography().then(function(){
this.buildObject();
})
}
};
Bir hizmet nesnesi aracılığıyla tüm fonksiyonları maruz: "Bu" nesneyi oturum açtığınızda
var service = {
all: all,
updateBiography: updateBiography,
get: get,
updateCheck: updateCheck,
isNewVersionNeeded:isNewVersionNeeded,
buildObject:buildObject
};
return service;
Im sağ buildFunc yürütülmesinden önce pencereyi kaydeder iken/global kapsam. Neden böyle ve bununla nasıl başa çıkmalıyım? Tüm uyumsuzluk yöntemlerini ayrı bir değişkendeki sadece onları hatırlamak için kaydetmek istemiyorum. Bu problemle nasıl başa çıkmalıyım ve neden çalışmıyor?
tüm hizmeti:
(function() {
angular
.module('biography.services', [])
.factory('Biography', Biography);
Biography.$inject = ['$http'];
function Biography($http) {
var biographyObject = { } ;
var service = {
all: all,
updateBiography: updateBiography,
get: get,
updateCheck: updateCheck,
isNewVersionNeeded:isNewVersionNeeded,
buildObject:buildObject
};
return service;
var self = this;
function updateCheck() {
if (this.isNewVersionNeeded()) {
this.updateBiography().then(function(){
self.buildObject();
})
}
};
function updateBiography() {
return $http.get("Apicall adress")
.then(function (resp) {
window.localStorage.setItem('biography', resp.data);
window.localStorage.setItem('biographyTimeStamp', Date.now());
}, function (err) {
console.log('ERR', err);
});
}
function all() {
return biographyObject;
}
function get(name) {
var biography = biographyObject;
for (var i = 0; i < biography.length; i++) {
if (biography[i].name === name) {
return biography[i];
}
}
return null;
}
function buildObject() {
var temp = JSON.parse(window.localStorage.getItem('biography'));
biographyObject = temp;
};
function isNewVersionNeeded() {
prevTimeStamp = window.localStorage.getItem('biographyTimeStamp');
var timeDifference = (Date.now() - prevTimeStamp);
timeDifference = 700000;
if (timeDifference < 600000) {
return false;
}
else {
return true;
}
}
}
})();
sayesinde çok amaca , ES6 çözümü çalışır. Diğeri yok (zaten denedim). Bence işe yaramıyor çünkü ben kendi kendime yaptığım yerde = bu tanımsız olarak geri dönüyor.Yani kodun neresinde koymalıyım? (tüm hizmeti gösterecek şekilde düzenlenmiştir) – Kai
işlevinin içine yerleştir Biyografi() {var self = this} – Ved
aslında, 'bu' anonim işlevin nerede tanımlandığına ve bağlam açık değilse, hangi yoldan çağrıldığına bağlıdır. 'call/bind/apply' ile ayarlayın – neaumusic