首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何确保在使用Angular 8中的getter之前已完成setter

在使用Angular 8中的getter之前确保已完成setter的方法是通过使用异步编程的方式来实现。以下是一种常见的实现方式:

  1. 创建一个Promise对象或使用Observable来处理异步操作。
代码语言:txt
复制
private _data: any;
private _dataPromise: Promise<any>;

public get data(): Promise<any> {
  if (this._dataPromise) {
    return this._dataPromise;
  } else {
    this._dataPromise = new Promise((resolve) => {
      // 在setter中完成异步操作后,调用resolve方法来解析Promise
      this._data = 'some data'; // 假设setter中设置了数据
      resolve(this._data);
    });
    return this._dataPromise;
  }
}
  1. 在setter中完成异步操作后,调用resolve方法来解析Promise。
代码语言:txt
复制
public set data(value: any) {
  // 异步操作,例如从服务器获取数据
  setTimeout(() => {
    // 完成异步操作后,设置数据并解析Promise
    this._data = value;
    if (this._dataPromise) {
      this._dataPromise.resolve(this._data);
      this._dataPromise = null;
    }
  }, 1000);
}
  1. 在使用getter时,通过调用data属性的then方法来获取数据。
代码语言:txt
复制
this.data.then((data) => {
  // 在这里使用获取到的数据
  console.log(data);
});

这种方法可以确保在使用getter之前已完成setter中的异步操作。在getter中,如果setter已经完成了异步操作并设置了数据,那么直接返回已解析的Promise;如果setter还未完成异步操作,那么创建一个Promise对象,并在setter完成异步操作后解析该Promise。这样,在使用getter时,可以通过调用Promise的then方法来获取数据,确保数据已经准备好。

对于Angular 8中的getter和setter的更多信息,可以参考官方文档:Property accessors

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Vue面试经常会被问到的

    MVVM 是 Model-View-ViewModel 的缩写。 Model代表数据模型,也可以在Model中定义数据修改和操作的业务逻辑。 View 代表UI 组件,它负责将数据模型转化成UI 展现出来。 ViewModel 监听模型数据的改变和控制视图行为、处理用户交互,简单理解就是一个同步View 和 Model的对象,连接Model和View。 在MVVM架构下,View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互,Model 和 ViewModel 之间的交互是双向的, 因此View 数据的变化会同步到Model中,而Model 数据的变化也会立即反应到View 上。 ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

    05

    论可复用的游戏服务器端开发框架(三)

    引导类系统的可复用模型 说到游戏中的“引导类系统”,最常见的就是所谓“新手引导”,这些专门设计的游戏流程,让玩家一步步的按规定顺序去操作游戏。而“任务系统”,也是最著名的引导类系统,这个最初只是基于NPC机关的小玩法,现在已经成为几乎所有游戏的标配。并且后续还出现了“每日奖励”,“日常任务”,“活动任务”,甚至“成就系统”等各种变种。这几个系统的核心逻辑,都是策划预设了一条“任务链”,让玩家通过操作,来改变自己在“任务链”上的位置。另外一种很特别的引导类系统,就是商店。最古老的游戏中都会有商店,到现在的游戏

    08

    Change Detection And Batch Update

    在传统的WEB开发中,当与用户或服务器发生交互时,需要我们手动获取数据并更新DOM,这个过程是繁琐的、易错的。 特别是当页面功能过于复杂时,我们既要关注数据的变化,又要维护DOM的更新,这样写出来的代码是很难维护的。 新一代的框架或库,例如Angular、React、Vue等等让我们的关注点只在数据上,当数据更新时,这些框架/库会帮我们更新DOM。 那么这里就有两个很重要的问题了:当数据变化时,这些框架/库是如何感知到的?当我们连续更新数据时,这些框架/库如何避免连续更新DOM,而是进行批量更新? 带着这两个问题,我将简要分析一下React、Angular1、Angular2及Vue的实现机制。

    04
    领券