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
方法/函数中。
我想从多个位置获取数据
Firebase 实时数据库就像 Frank van Puffelen 描述的 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
方法/函数中。