如何让CoffeeScript闭包知道非局部变量?

时间:2012-12-04 04:48:10

标签: javascript coffeescript closures

这是使用express和async的CoffeeScript片段。如何让最终回调函数知道模板的值?

app.get '/', (req, res) -> template = 'main'
async.parallel([
  (callback) ->
    db.collection1.find(
      {},
      (err, data) ->
      if !err && data  
        callback null, data
      else
        callback null, null
    ),
  (callback) ->
    db.collection2.find(
      {},
      (err, data) ->
      if !err && data  
        callback null, data
      else
        callback null, null
    )
], (err, results) ->
  console.log template
)

1 个答案:

答案 0 :(得分:1)

async块放在app.get回调中(template = 'main'下方)。像这样:

app.get '/', (req, res) -> 
  template = 'main'
  async.parallel([
    (callback) ->
      db.collection1.find(
        {},
        (err, data) ->
        if !err && data  
          callback null, data
        else
          callback null, null
      ),
    (callback) ->
      db.collection2.find(
        {},
        (err, data) ->
        if !err && data  
          callback null, data
        else
          callback null, null
      )
  ], (err, results) ->
    console.log template
  )