クラスをインスタンス化した後、を呼び出しますmyClass.testScope()
。これは、クラス内の別の関数を呼び出します。しかし、関数をパラメーターとして渡すと、スコープが失われ、結果testScopeFromPassedParam
から呼び出すとdata1
、エラーUncaught TypeError:Object[objectglobal]にメソッド'testScopeFromPassedParam'がありません。
誰かがこれを処理するための最良の方法で助けてくれますか?
class MyClass
test: () ->
@testScope()
testScope: () ->
console.log 'worky'
testScopeFromPassedParam: () ->
console.log 'no worky'
data1: (cb) ->
# Shoot. The error.
@testScopeFromPassedParam()
setTimeout (->
cb '1'
), 1000
data2: (cb) ->
setTimeout (->
cb '2'
), 3000
loadData: () ->
getDeferred = (someFunction) ->
deferred = $.Deferred()
someFunction (data) ->
console.log data
deferred.resolve()
deferred
dataFunctions = [
@data1
@data2
]
arrayOfPromises = [ ]
for someFunction in dataFunctions
arrayOfPromises.push getDeferred(someFunction)
$.when.apply(null, arrayOfPromises).done () =>
alert 'returned'
myClass = new MyClass()
myClass.testScope()
myClass.loadData()