与Promise.all等效的C#是什么?

问题描述 投票:4回答:2

我想从多个位置获取数据Firebase实时数据库,如Frank Van Puffelen所描述的herehere,我在c#中找不到与Promise.all等效的任何内容。正确的做法是什么?

c# firebase promise task-parallel-library
2个回答
9
投票

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


0
投票

详细介绍@Christos接受的答案:

Task.WhenAll似乎与Promise.all的替代品差不多。实际上,我发现它比我最初想象的要近。这是一个使用JavaScript Promise.all实现的示例,您可能想在C#中复制它:

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

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

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

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