离子异步功能不起作用

时间:2018-03-16 14:20:52

标签: angularjs typescript ionic-framework ionic2 ionic3

 submit_form(){
    console.log(this.check_mobile());
  }
  async function check_mobile(){
    if(this.signup.mobile != ''){
      var link = 'https://www.example.com/Android/check_mobile';
      var post_data = JSON.stringify({mobile: this.signup.mobile});
      this.http.post(link, post_data).map(res => res.json()).subscribe(data => {
        if(data == 0){
          return await false;
        }
        else{
          return await true;
        }
      });
    }
    else{
      return false;
    }
  }

任何人都可以告诉我它为什么不起作用?我怎样才能使它可行?抱歉我的英语不好。

1 个答案:

答案 0 :(得分:0)

首先return await truereturn await false是还原剂。你可以return truereturn false,事实上你甚至不需要await / async

它不起作用,因为您正在使用Observable并且您没有等待它。请改用Promise(您可能需要导入rxjs/add/operator/toPromise)。

function check_mobile(){
    if(this.signup.mobile != '') {
        var link = 'https://www.example.com/Android/check_mobile';
        var post_data = JSON.stringify({mobile: this.signup.mobile});

        return this.http
            .post(link, post_data)
            .map(res => res.json())
            .toPromise()
            .then(data => {
                if(data == 0) {
                    return false;
                }
                else {
                    return true;
                }
            });
    }
    else {
        return false;
    }
}

或使用await

async function check_mobile(){
    if(this.signup.mobile != '') {
        var link = 'https://www.example.com/Android/check_mobile';
        var post_data = JSON.stringify({mobile: this.signup.mobile});

        const data = await this.http
            .post(link, post_data)
            .map(res => res.json())
            .toPromise();

        if(data == 0) {
            return false;
        }
        else {
            return true;
        }
    }
    else {
        return false;
    }
}