Voglio creare un oggetto in Javascript.Accedere a "questo" di un oggetto all'interno della promessa di callback (quindi)
Uno dei metodi dovrebbe eseguire una catena di promesse. Ciascuno dei metodi nella catena deve accedere a una variabile di configurazione che è un membro dell'oggetto. Il problema è che l'operatore this
viene modificato in PromiseMethod2
e non riesco ad accedere alla variabile di configurazione (Funziona correttamente in PromiseMethod1
).
Ecco il mio codice:
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!');
}
voglio usare il metodo delegato della catena invece di esecuzione:
that.PromiseMethod1().then(function(response) { return that.PromiseMethod2(that, response); };
non posso utilizzare il metodo bind
perché sembra che si riapre quando viene eseguita la richiamata.
C'è una soluzione a questo? Perché c'è una differenza tra PromiseMethod1
e PromiseMethod2
?
Come si risolve 'SomePromise'? – Kiril
Ogni metodo può fare cose diverse. Per lo più uso 'nuova promessa (risoluzione, rifiuto)' e quindi risolvo (somePrams). Oppure uso una promessa di terze parti come ElasticSearch o Promessa di richiesta – shudima
Hai affermato che non puoi usare bind, ma ci hai provato? Sembra che sia la soluzione giusta. –