首页 > 解决方案 > 如何多次动态计算来自多个地方的结果?取消 Promise.All()

问题描述

有一个搜索字段和结果。

我需要根据搜索字段中的查询动态搜索来自多个地方(插件)的结果。

我有一个方法:

async onQuery(query) {
  await Promise.all(
    plugins.map(async plugin => {
      return await getSomeDataFromPlugin(query, plugin).then(appendResults)
    });
  );
}

我现在的问题是我有几个重复的结果。因为之前的结果还没有计算出来,我们已经在计算新的了。

例如:

  1. 我们p在搜索字段中输入并从getSomeDataFromPlugin方法中获取结果(按首字母搜索):['play', 'pause']

  2. 我们进入pa并得到['pause', 'play from another place with a long response']

但预期只是['pause'];


Promise.all如果我们有一个新的查询,是否有可能以某种方式取消所有以前的?

标签: javascriptnode.jspromisecancellation

解决方案


推荐阅读