Promise.all 的 C# 是什么?

What is the C# equivalent to Promise.all?

我想从多个位置获取数据 Firebase 实时数据库就像 Frank van Puffelen 描述的 and 一样,我在 c# 中找不到任何等同于 Promise.all 的东西。正确的做法是什么?

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

扩展@Christos 接受的答案:

Task.WhenAll appears to be about as close as you will get for a drop-in replacement for Promise.all。我实际上发现它比我最初想象的要近。下面是一个使用 JavaScript Promise.all 实现的示例,您可能希望在 C# 中复制它:

const [ resolvedPromiseOne, resolvedPromiseTwo ] = await Promise.all([ taskOne, taskTwo ]);

在 C# 中,您可以使用 Task.WhenAll 做一些非常相似的事情(假设它们 return 是相同的类型)。

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);
}

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