如何在 NodeJS 中并发执行的 Promise 之间共享数据

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

我想在如下所示的两个并发方法调用之间共享数据。

async generateSuggestedSparks(userId: GraphID, friends: Person[], latLng: LatLng) {
    let suggestions = await this.generateAndMergeListsInParallel([
      this.generateHardCodedSparks(userId, friends, latLng),
      this.generateRandomActivitySparks(userId, friends, latLng, 6),
    ]);
    suggestions = this.filterDuplicateSuggestions(suggestions);

    return suggestions.slice(0, 7);
  }

  async generateAndMergeListsInParallel<T>(promises: Promise<T[]>[]): Promise<T[]> {
    let lists = await Promise.all(promises);
    return lists.flat();
  }

每种方法都会为随机选择的朋友子集生成许多工件。在这两种方法中,我都会从好友列表中删除选定的好友,以避免多次选择同一个好友。我想概括这一逻辑,以在两个并发承诺之间共享数据,以避免一个选择另一个已在另一个中使用的朋友。

在 NodeJS 中并发运行的方法之间共享数据的规范方法是什么?

javascript node.js typescript concurrency
1个回答
2
投票

JavaScript 是一种单线程语言,它本身不支持或处理并行请求。您将不得不使用其他一些框架来进行并行处理。即使有承诺,方法也会一一执行。

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