React Native - Async / Await on Class未按预期工作

时间:2016-05-07 18:28:03

标签: javascript react-native ecmascript-6 es6-promise

这是我的代码......

'use strict';
var React = require('react-native');
var {
  AsyncStorage
} = React;



exports.buildUrl = function(){
  var test = new Sales();
  test.getOrder();
}

class queryBuilder{

  constructor() {

  }

  getUrl(){
    AsyncStorage.getItem('auth').then((value) => {
      var auth = JSON.parse(value);
      var store = auth.url;
      console.log('store = ' + store);
      return store;
    });
  }

}

class Sales extends queryBuilder{

  async getOrder(){
    console.log('get order hit');
    try{
        var urlstart =  await this.getUrl();
    } catch(e) {
      console.log('ERROR')
      console.log(e);
    }
    console.log('URL BELOW');
    console.log(urlstart);
    console.log('URL ABOVE');
  }

}

在我的getOrder方法中,我希望urlstart不会undefined,因为我已经使用了等待。

console.log方法中的getUrl()是我在控制台中返回的最后一件事。

也许就是那个星期六的感觉,任何帮助都非常感激!

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题。 Async Await需要在我正在调用的函数上返回一个承诺。 我修改了getUrl()方法,如下所示。

  getUrl(){
    return new Promise(function(resolve, reject) {
      AsyncStorage.getItem('auth').then((value) => {
        var auth = JSON.parse(value);
        var store = auth.url;
        console.log('store = ' + store);
        resolve(store);
      });
    }

任何进一步的消息仍然非常赞赏。

更新更好,感谢Yuri

getUrl(){ return AsyncStorage.getItem('auth').then(value => JSON.parse(value).url) }