4-Nancy文档教程——异步

异步

原文地址:https://github.com/NancyFx/Nancy/wiki/Async

语法

不管是 Before/After通道还是主要路径委托都可以指定为异步。语法和同步代码几乎是一样,除了下面这的这些小变化:

·· Before/After 钩子函数有两个参数,比同步语法的Context多了一个cancellation token(防伪标识).

··路径定义多了一个boolean型参数,委托有两个参数,captured param(拍摄参数?)cancellation token(防伪标识).

异步例子:

publicMainModule()

{

    Before += async(ctx, ct) =>

        {

            this.AddToLog("Before Hook Delay\n");

            awaitTask.Delay(5000);

 

            returnnull;

        };

 

    After += async(ctx, ct) =>

        {

            this.AddToLog("After Hook Delay\n");

            awaitTask.Delay(5000);

            this.AddToLog("After Hook Complete\n");

 

            ctx.Response= this.GetLog();

        };

 

    Get["/", true] = async (x, ct) =>

        {

            this.AddToLog("Delay 1\n");

            awaitTask.Delay(1000);

 

            this.AddToLog("Delay 2\n");

            awaitTask.Delay(1000);

 

            this.AddToLog("Executing async httpclient\n");

            var client = new HttpClient();

            var res = await client.GetAsync("http://nancyfx.org");

            var content = await res.Content.ReadAsStringAsync();

 

            this.AddToLog("Response: " + content.Split('\n')[0] + "\n");

 

            return (Response)this.GetLog();

        };

}

热任务/4.0支持

Async/await只有4.5以上的版本才支持异步请求(.net4.0以上)。如果你选择只使用TPL或者RX,那么我们希望从路径返回的Tasks是热的(已经启动),请一定要确定你从委托中所返回的任务都是热的,否则你的请求是不会有反应的。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值