2016-02-25 2 views
1

У меня есть метод, который возвращает обещание, как:Невозможно вызвать методы внутри улова или то обещания вызова

checkLogin(credentials) { 
     return new Promise((resolve, reject) => { 
      this.http.post(url, credentials) 
       .map(res => res.json()) 
       .subscribe(
       data => { 
        resolve(data); 
       }, 
       err => { 
        reject(err); 
       } 
      ); 
     }); 
    } 

Я называю этот метод внутри другой:

login(credentials) { 
     this.checkLogin(credentials) 
      .then(function(result) { 
       console.log("ok: ",result); 
       this.doAlert("ok"); 
      }) 
      .catch(function(err) { 
       console.log("error: ",err.message); 
       this.doAlert(err.message) 
      }); 
} 

Вот где ошибка происходит, она говорит "TypeError: this.doAlert не является функцией":

enter image description here

Но doAlert находится в том же файле, чем другие, и это работает отлично от других мест (не обещает звонки)

doAlert(text) { 
     let alert = Alert.create({ 
      title: 'Alert;, 
      subTitle: text, 
      buttons: ['Ok'] 
     }); 
     this.nav.present(alert); 
    } 

Разве это не возможно сделать это?

ответ

4

Используйте жир со стрелками функции вместо

login(credentials) { 
    this.checkLogin(credentials) 
     .then((result) => { 
      console.log("ok: ",result); 
      this.doAlert("ok"); 
     }) 
     .catch((err) => { 
      console.log("error: ",err.message); 
      this.doAlert(err.message) 
     }); 
} 

, чтобы область применения

Смотри также
- https://basarat.gitbooks.io/typescript/content/docs/arrow-functions.html
- https://github.com/Microsoft/TypeScript/wiki/ «this'-в-машинопись
- What's the meaning of "=>" in TypeScript? (Fat Arrow)

2

Использование функций стрелок

login(credentials) { 
    this.checkLogin(credentials) 
     .then((result) => { 
      console.log("ok: ",result); 
      this.doAlert("ok"); 
     }) 
     .catch((err) => { 
      console.log("error: ",err.message); 
      this.doAlert(err.message) 
     }); 
Смежные вопросы