Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.2k views
in Technique[技术] by (71.8m points)

constructor 里面如何使用 await 或如何设计这个类?

封装了一个类,初始化成员的时候获需要使用一个异步方法

请问如何使用同步初始化这个成员呢?

class MyStorage {
  $data = [];

  constructor() {
    try {
      // 请问这怎么用 await 来同步初始化这个类的属性
      const _data = await Storage.getItem('abcd');
      if (_data) {
        this.$data = _data;
      }
    } catch (error) {
      this.$data = [];
    }
  }  
  // ....
}

export const MyABCStorage = new MyStorage();

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

constructor不能是async函数,你可以简单套个自执行函数来使用。

class MyStorage {
  $data = [];

  constructor() {
    (async () => {
      try {
        const _data = await Storage.getItem('abcd');
        if (_data) {
          this.$data = _data;
        }
      } catch (error) {
        this.$data = [];
      }
    })();
  }
}

但这种写法只是让你能在constructor里面写await而已,实例化过程是没有pending


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...