将承诺放在前端还是后端更好? [关闭]

问题描述 投票:0回答:1

我目前正在重构代码,因为存在一些加载时间问题,这些问题阻碍了我的数据在生产中正确加载。

只是为了养成更好的习惯,您是否建议将promise放在进行我的db调用的后端,或者放在所说的db方法并返回结果的前端?是否同时使用两者?

javascript promise bluebird
1个回答
1
投票

[一如既往,在技术上要权衡利弊,但是,由于我大部分时间都花在角度上,我会告诉你我将如何做到这一点:

我将编写一个从RXJS订阅中获取单个值的服务,然后使用Promise对其进行包装,这是一个Firebase示例:

  getValue(path: string): Promise<any> {
    var pathArr = path.split('/')
    var col = pathArr[0]
    var doc = pathArr[1]
    if (doc) {
      return new Promise((resolve) => {
        this.afs
          .collection(col)
          .doc(doc)
          .valueChanges()
          .pipe(take(1))
          .subscribe((val) => {
            resolve(val);
          });
      });
    } else {
      return new Promise((resolve) => {
        this.afs
          .collection(col)
          .valueChanges()
          .pipe(take(1))
          .subscribe((val) => {
            resolve(val);
          });
      });
    }
  }
}

然后,我将通过使用.then()函数获得promise的值,相同的firebase示例:

this.Database.getValue('Developers').then((val) => {
      var output = [];
      val.forEach((dev: any) => {
        //@ts-ignore
        output.push(dev.name);
      });
      output = output.filter((_val) => {
        return _val !== undefined;
      });
      this.options = output;
      this.filteredOptions = this.developerForm
        .get('applyTo')
        .valueChanges.pipe(
          startWith(''),
          map((value) => this._filter(value))
        );
    });
  }

总之,我的投票投向了前端哈哈:)

© www.soinside.com 2019 - 2024. All rights reserved.