zoukankan      html  css  js  c++  java
  • http.lua里的装饰器

    摘自:http.lua

    local co_yield = coroutine.yield
    local co_create = coroutine.create
    local co_status = coroutine.status
    local co_resume = coroutine.resume
    local select = select
    
    
    -- Reimplemented coroutine.wrap, returning "nil, err" if the coroutine cannot
    -- be resumed. This protects user code from inifite loops when doing things like
    -- repeat
    --   local chunk, err = res.body_reader()
    --   if chunk then -- <-- This could be a string msg in the core wrap function.
    --     ...
    --   end
    -- until not chunk
    local co_wrap = function(func)
        local co = co_create(func)
        if not co then
            return nil, "could not create coroutine"
        else
            return function(...)
                if co_status(co) == "suspended" then
                    return select(2, co_resume(co, ...))
                else
                    return nil, "can't resume a " .. co_status(co) .. " coroutine"
                end
            end
        end
    end
    

      

    作者:Standby一生热爱名山大川、草原沙漠,还有妹子
    出处:http://www.cnblogs.com/standby/

    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    CSS
    js
    js
    js
    JS
    Service Worker 学习笔记
    JS JavaScript模块化(ES Module/CommonJS/AMD/CMD)
    前端开发 JavaScript 规范文档
    HTML HTML5 新特性
    JS 设计模式九 -- 装饰器模式
  • 原文地址:https://www.cnblogs.com/standby/p/7880565.html
Copyright © 2011-2022 走看看