首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >node_redis hgetall回调函数上的Coffeescript变量作用域

node_redis hgetall回调函数上的Coffeescript变量作用域
EN

Stack Overflow用户
提问于 2012-10-31 14:38:41
回答 1查看 197关注 0票数 1

我有以下代码:

代码语言:javascript
复制
genUserLeagueDiscussionTable = (userLeagueId, firstEntry, displayEntries) ->
  # Generate League Discussion
  leagueDiscussionTable = 
    striped:   yes
    bordered:  yes
    hover:     no
    condensed: yes
    columns:   [{head:"Name"}, {head:"Comments"}]

  console.log "get userLeague #{userLeagueId}"
  LeagueId = userLeagueId

  getLeagueDiscussionEntries =  (entry, callback) =>
    getDiscussionEntry = (err,cnreply) ->
      setDiscussionTableRows = (err,replyObj,request) ->
        leagueDiscussionTable.rows[entry.dataentrynum].data = [replyObj.nickname,cnReply.entryText]
      console.log "Reply received for entry ",entry.entrynum
      console.log cnreply.entryText
      loginclient.hgetall 'uid:'+cnReply.postingUid, setDiscussionTableRows
      callback()
    lookupentry = entry.lookupentry
    console.log "getting entry for ", entry, " database key ", lookupentry
    leagueclient.hgetall lookupentry, getDiscussionEntry
  getLeagueInfo = (err,lreplyObj) =>
    console.log "got league info", lreplyObj
    leagueDiscussionTable.caption = lreplyObj.leagueName+" League Info"
    console.log "caption", leagueDiscussionTable.caption
    leagueDiscussionEntries = lreplyObj.currentDiscussionEntry
    console.log "Caption ",leagueDiscussionTable.caption," entries ", leagueDiscussionEntries, " Display Entries ",displayEntries
    lastEntry = Math.min(leagueDiscussionEntries,firstEntry+displayEntries)
    console.log "start entry ", firstEntry, " last entry ", lastEntry
    entries=[]
    for num in [firstEntry..lastEntry]
      console.log num,".a"
      entries[num]={}
      entries[num].entrynum=num
      console.log num,".b"
      entries[num].lookupentry="userLeagueId:#{LeagueID}:discussionEntryId:#{entry}"
      console.log num,".c"
      entries[num].dataentrynum = num-firstEntry
      console.log num," ", entries[num]
    console.log "Lookup the entries ", entries
    async.forEach entries, getLeagueDiscussionEntries
    , (err,reply) ->
      console.log "callback 1"
  leagueclient.hgetall "userLeagueId:#{LeagueId}", getLeagueInfo
  return leagueDiscussionTable

无论我做什么,我都不能在getLeagueInfo中访问LeagueId或userLeagueId。它在外部包装器中运行良好,但我不能在回调函数中访问它。

我做错了什么?

谢谢你的帮助。

Edit有没有办法通过hgetall调用回调将它作为参数传递给函数?

弗雷德

EN

回答 1

Stack Overflow用户

发布于 2012-10-31 23:49:00

您的代码有许多依赖项,因此很难单独理解,但我建议将LeagueId更改为实例变量:

代码语言:javascript
复制
`@leagueId = userLeagueId`

然后在getLeagueInfo中引用@leagueId

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13152517

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档