关于if语句中的异步请求

发布于 2022-09-06 06:54:50 字数 406 浏览 10 评论 0

有一个列表需要通过异步接口获取当前位置然后再返回数据,但是我不想每次都请求这个获取位置,我就想先加个判断,有值直接获取列表,没值先获取位置再获取列表,但是问题就来了,因为他是异步的,我没办法写成下面这样:

if (!hasLocation) {
      getLocationSync()
}
 
//TODO :getStoreList

然后我现在就改成了这样:

if (!hasLocation) {
      this.getLocationSync().then(this.getStoreList());
} else {
      this.getStoreList()
}

请问有什么优雅的写法吗???

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

小耗子 2022-09-13 06:54:50

三目表达式:hasLocation ? this.getStoreList() : this.getLocationSync().then(this.getStoreList());

落日海湾 2022-09-13 06:54:50
let cacheList = Cache['list'];
new Promise((resolve, reject) => {
    if (cacheList && cacheList.length) {
        resolve(cacheList);
        return;
    }
    this.getLocationSync()
    .then(list => {
        // 缓存
        Cache['list'] = list;
        resolve(list);
    })
    .catch(reject);
})
.then(list => {
    console.log(list);
})
星星的轨迹 2022-09-13 06:54:50
async demo(hasLocation) {
      if (!hasLocation) {
        await this.getLocationSync()
      }
      this.getStoreList()
}

getLocationSync() {
    let _this = this
    return new Promise((reslove, reject) => {
      getCount({phone: _this.params.phone}).then((res) => {
          reslove(res.data.count)
      })
    })
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文