0

私はこのコードを coffeescript に持っています:

render: (collectionName)=>
  console.log "I am rendering"
  @buildBreadcrumb(collectionName) 

buildBreadcrumb: (collectionName) ->
  i=0
  _.each @urlParts, (url_part) =>
      i++
      console.log('value of i : ',i)
      collection = @getCollection(collectionName)
      if (collection.length == 0)
        collection.fetch({
          success: (collection) =>
            @render()
        })
      else
        @appendBreadcrumb()

そして、時々、次のような出力が得られる理由がわかりません:

I am rendering 
value of i : 1
value of i : 2
value of i : 3
/* STRANGE START HERE */
value of i : 2
value of i : 3

フェッチの成功時に @render() を削除すると、この問題はなくなります。_each ループが再び始まるようです...しかし、なぜですか?

@render を "complete" コールバックに設定すると、すべて正常に動作します。

render: (route)=>
  console.log "I am rendering"
  @buildBreadcrumb() 

buildBreadcrumb: ->
  i=0
  _.each @urlParts, (url_part) =>
      i++
      console.log('value of i : ',i)
      collection = Proscale.Collections.getCollection(collectionName)
      collection.fetch({
        complete: (collection) =>
          @render()
      })
4

1 に答える 1

1

これを試して、

render: ()=>
  console.log "I am rendering"
  @buildBreadcrumb(collectionName) 

buildBreadcrumb: (collectionName) ->
  i=0
  _.each @urlParts, (url_part) =>
      i++
      console.log('value of i : ',i)
      collection = @getCollection(collectionName)
      collection.fetch({
        success: (collection) =>
          @doSomething(collection)
      })

doSomething : (collection) ->
于 2012-09-24T12:50:08.727 に答える