在新的“异步”样式中,JavaScript 的 setTimeout(callback, milliseconds)
与 C# 的模拟是什么?
例如,如何将以下延续传递风格的 JavaScript 重写为支持异步的现代 C#?
JavaScript:
function ReturnItAsync(message, callback) {
setTimeout(function(){ callback(message); }, 1000);
}
C#-5.0:
public static async Task<string> ReturnItAsync(string it) {
//return await ... ?
}
最佳答案
AsyncCTP 有 TaskEx.Delay
。这会将计时器包装在您的任务中。请注意,这不是生产就绪代码。 TaskEx
将在 C# 5 到来时合并到 Task
中。
private static async Task ReturnItAsync(string it, Action<string> callback)
{
await TaskEx.Delay(1000);
callback(it);
}
或者如果你想返回它
:
private static async Task<string> ReturnItAsync(string it, Func<string, string> callback)
{
await TaskEx.Delay(1000);
return callback(it);
}
关于c# - C#5.0 中的非阻塞 sleep (类似于 JavaScript 中的 setTimeout),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629521/