Tôi muốn tạo một đối tượng trong Javascript.Truy cập 'this' của một đối tượng bên trong lời gọi lại lời hứa (sau đó)
Một trong các phương pháp nên thực hiện chuỗi lời hứa. Mỗi phương thức trong chuỗi phải truy cập một biến cấu hình là thành viên của đối tượng. Vấn đề là, các nhà điều hành this
được thay đổi trong PromiseMethod2
và tôi không thể truy cập vào biến cấu hình (Nó hoạt động chính xác trong PromiseMethod1
).
Dưới đây là mã của tôi:
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!');
}
Tôi muốn sử dụng các đại biểu phương pháp trong chuỗi thay vì chỉ thực hiện:
that.PromiseMethod1().then(function(response) { return that.PromiseMethod2(that, response); };
Tôi không thể sử dụng phương pháp bind
vì nó trông giống như nó được rebinded khi gọi lại được thực hiện.
Có giải pháp cho điều này không? Tại sao có sự khác biệt giữa PromiseMethod1
và PromiseMethod2
?
Làm thế nào để bạn giải quyết 'SomePromise'? – Kiril
Mỗi phương pháp có thể làm việc khác nhau. Chủ yếu là tôi sử dụng 'Promise mới (giải quyết, từ chối)' và sau đó giải quyết (somePrams). Hoặc tôi sử dụng lời hứa của bên thứ ba như ElasticSearch hoặc Yêu cầu-Promise – shudima
Bạn khẳng định rằng bạn không thể sử dụng liên kết, nhưng bạn đã thử chưa? Có vẻ như đó là giải pháp đúng. –