Chcę utworzyć obiekt w JavaScript.Uzyskiwanie dostępu do "tego" obiektu wewnątrz wywołania zwrotnego obietnicy (wtedy)
Jedna z metod powinna wykonać łańcuch obietnic. Każda z metod w łańcuchu musi uzyskać dostęp do zmiennej konfiguracyjnej, która jest członkiem obiektu. Problem polega na tym, że operator this
został zmieniony w PromiseMethod2
i nie mogę uzyskać dostępu do zmiennej konfiguracyjnej (działa poprawnie w PromiseMethod1
).
Oto mój kod:
var SomeObject(config) {
var that = this;
that.config = config;
}
SomeObject.prototype.SomeMethod = function() {
var that = this;
that.PromiseMethod1()
.then(that.PromiseMethod2)
.catch(console.error);
}
SomeObject.prototype.PromiseMethod1 = function() {
var that = this;
config = that.config;
return SomePromise();
}
SomeObject.prototype.PromiseMethod2 = function(someParams) {
var that = this;
config = that.config;
params = someParams;
return SomePromise();
}
var someObject = new SomeObject(someConfig);
someObject.SomeMethod().then(function() {
console.log('Done!');
}
chcę użyć delegata metoda w sieci, a nie tylko wykonanie:
that.PromiseMethod1().then(function(response) { return that.PromiseMethod2(that, response); };
nie mogę użyć metody bind
bo wygląda na to zostanie ponownie powiązana, gdy wywołanie zwrotne zostanie wykonane.
Czy istnieje rozwiązanie tego problemu? Dlaczego istnieje różnica między PromiseMethod1
a PromiseMethod2
?
Jak rozpoznajesz 'SomePromise'? – Kiril
Każda metoda może działać inaczej. Przeważnie używam "nowej obietnicy (rozwiązać, odrzucić)", a następnie rozwiązać (niektórePramy). Lub korzystam z obietnicy innej firmy, takiej jak ElasticSearch lub Request-Promise – shudima
Potwierdzasz, że nie możesz używać bindów, ale czy próbowałeś? Wygląda na to, że to właściwe rozwiązanie. –