2016-01-26 2 views
1

Я хочу сделатьвозвращение ES6 обещания конструктора - это связывание

X.prototype.f = function() { 
    return new Promise(
     function(resolve, reject) { 
      if (this.f1()==0) resolve(); 
      ... 

однако this (то есть X экземпляр) не определен внутри конструктора обещания. Я понимаю, что мне нужно каким-то образом связать это, но не уверен, как действовать дальше?

ответ

2

Вы можете назначить этот другой переменной внутри функции

X.prototype.f = function() { 
    var self = this; 
    return new Promise(
     function(resolve, reject) { 
      if (self.f1()==0) resolve(); 
      ... 
5

Как вы используете ES6, почему вы не используете ES6?

X.prototype.f = function() { 
    return new Promise((resolve, reject) => { 
     if (this.f1()==0) resolve(); 
    }); 
} 
+1

из-за IE, но это удивительный thx! – kofifus

Смежные вопросы