什么是C#等同于Promise.all?

Dav*_*ave 3 c# task-parallel-library promise firebase

我想从火力地堡实时数据库就像多个位置获取数据描述这里这里由Frank面包车Puffelen,我无法找到任何等同于Promise.all在C#.这样做的正确方法是什么?

Chr*_*tos 8

你正在寻找的是Task.WhenAll.您应该创建与要从中获取数据的多个位置一样多的任务,然后使用此方法提供它们.


Bry*_*rty 7

扩展@Christos 接受的答案:

Task.WhenAll似乎与Promise.all的直接替代品一样接近。我实际上发现它比我最初想象的更接近。以下是使用 JavaScript 实现的示例Promise.all,您可能希望在 C# 中复制该实现:

const [ resolvedPromiseOne, resolvedPromiseTwo ] = await Promise.all([ taskOne, taskTwo ]);
Run Code Online (Sandbox Code Playgroud)

在 C# 中,您可以执行非常类似的操作Task.WhenAll(假设它们返回相同的类型)。

var taskList = new[]
{
  SomeTask(),
  AnotherTask()
};

var completedTasks = await Task.WhenAll(taskList);

// then access them like you would any array
var someTask = completedTasks[0];
var anotherTask = completedTasks[1];

// or just iterate over the array
foreach (var task in completedTasks)
{
  doSomething(task);
}
Run Code Online (Sandbox Code Playgroud)

这假设它们都在async方法/函数中。