【问题标题】:Types for Promise.all()Promise.all() 的类型
【发布时间】:2022-11-25 03:31:41
【问题描述】:

我无法找出请求元组返回类型和 Promise.all() 之间的这些类型。我快要疯了。

有任何想法吗?

const createPromises = async (utteranceObject: Array<string[]>): 
  Promise<Array<[string, Blob]>> => {
  const promises = utteranceObject.map((keyValue) => {
    return buildAudioFetchRequests(keyValue[0], keyValue[1]);
  });
  return Promise.all<Promise<[string, Blob]>[]>(promises);
};

const buildAudioFetchRequests = (key: string, url: string): 
     [string, Promise<[string, Blob]>] => {
  return [key, useAuthenticatedFetch(url, { initialCache: false })];
};

【问题讨论】:

    标签: typescript promise


    【解决方案1】:

    基于变量名promises,您对代码有误解。

    buildAudioFetchRequests 的返回类型不是承诺,它是键和承诺的元组。等待该值返回相同的元组,因为等待不关心对象或数组的内容。

    基于所有其他返回类型,您似乎想要等待作为元组一部分的所有返回承诺,因此改为:

    const createPromises = async (utteranceObject: Array<string[]>): 
      Promise<Array<[string, Blob]>> => {
    
      // Rename this variable here
      const requests = utteranceObject.map((keyValue) => {
        return buildAudioFetchRequests(keyValue[0], keyValue[1]);
      });
    
      // Get the actual promise from the tuple
      const promises = requests.map((req) => req[1]);
    
      // You can even remove the explicit typing from here because it's all as intended now!
      return Promise.all(promises);
    };
    
    const buildAudioFetchRequests = (key: string, url: string): 
         [string, Promise<[string, Blob]>] => {
      return [key, useAuthenticatedFetch(url, { initialCache: false })];
    };
    

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2021-02-23
      • 2021-05-26
      • 2019-07-05
      • 2019-08-07
      • 1970-01-01
      • 1970-01-01
      • 2016-11-20
      相关资源
      最近更新 更多