douweng3564 2019-02-26 17:13
浏览 89
已采纳

如何使用request.Context而不是CloseNotifier?

I am using CloseNotifier in my application, in a code that looks like this

func Handler(res http.ResonseWriter, req *http.Request) {
    notify := res.(CloseNotifier).CloseNotify()

    someLogic();
    select {
        case <-notify:
            someCleanup()
            return;
        default:
    }
    someOtherLogic();
}

I have noticed CloseNotifier is now deprecated. From source code:

// Deprecated: the CloseNotifier interface predates Go's context package.
// New code should use Request.Context instead.

However, I am not sure how to use Request.Context exactly here.

  • 写回答

1条回答 默认 最新

  • doudun5009 2019-02-26 17:17
    关注

    It seems rather simple actually. From this blogpost:

    func Handler(res http.ResonseWriter, req *http.Request) {
        ctx := req.Context()
    
        someLogic();
        select {
            case <-ctx.Done():
                someCleanup(ctx.Err())
                return;
            default:
        }
        someOtherLogic();
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题