CoffeeScript声明并使用全局函数

时间:2014-01-08 16:18:18

标签: coffeescript

伙计们,给出以下代码......如何重用returnResultreturnError函数?是否可以使其范围对所有必需的文件都是全局的。

fs = require 'fs'

module.exports.syncJSON = (req, res)->
    returnResult = (data) ->
        res.send data

    returnError = (data) ->
        res.send data

    jsonFileContents = fs.readFileSync('sample.json', 'utf8')
    returnResult(jsonFileContents)

module.exports.asyncJSON = (req, res)->
    fs.readFile 'sample.json', (err, data) -> 
        if err
            returnError(err)
        else
            returnResult(data.toString())

    returnResult = (data) ->
        res.send data

    returnError = (data) ->
        res.send data

1 个答案:

答案 0 :(得分:1)

我认为您要问的是如何在两个导出(returnErrorreturnResult)中使用.asyncJSON.syncJSON。全局通常是一个坏主意。如果其他人覆盖你的全局怎么办?你会有一个奇怪的,间歇性的失败。如果是这样,您需要做的就是将它们移出当前范围并传入响应对象:

s = require 'fs'

returnResult = (res, data)->
  res.send data
returnError = (res, err) -> 
  res.send err

module.exports.syncJSON = (req, res)->
  jsonFileContents = fs.readFileSync('sample.json', 'utf8')
  returnResult(res, jsonFileContents)

module.exports.asyncJSON = (req, res)->
  fs.readFile 'sample.json', (err, data) -> 
    if err
      returnError(res, err)
    else
      returnResult(res, data.toString())