等待延迟加载状态的初始化

时间:2018-04-09 05:22:30

标签: javascript reactjs typescript asynchronous async-await

我有一个按钮和一个onClick处理程序。我在onClick处理程序中的第一个想法是

if (this.state.lazyLoadedData === undefined) {
    await this.loadData();
}

我的问题是,如果我快速点击按钮两次,this.loadData()会被执行两次。

解决这个问题的打字稿/反应惯用方法是什么?

1 个答案:

答案 0 :(得分:2)

习惯的方法是始终使用显式承诺来访问延迟加载的数据。

在某处声明并初始化

loadDataPromise: Promise<YourDataType> | undefined = undefined;

然后,在onclick处理程序

if (!this.loadDataPromise) {
    this.loadDataPromise = this.loadData();
}

this.loadDataPromise.then(yourDataHere => {
});
相关问题