Я пишу пакет для редактора Atom, используя Coffeescript.В Atom, модуль не определен с использованием обещаний и функций
Мой пример кода:
module.exports =
class DeclarationTree
createIndexModules: (files, length) =>
@modules = new Map()
...
onClic = (text) =>
# PROBLEM **@modules** IS UNDEFINED
file_array = @modules.get(text)
console.log file_array
console.log file_array[0], file_array[1]
getProvider: ->
providerName: 'hyperclick-provider',
# getSuggestionForWord gives me a promise
getSuggestionForWord: (editor, text, range) ->
range: range, callback: ->
onClic(text)
Конечно, @modules определяется перед вызовом onClic().
Я не знаю, как его решить, я довольно новичок в Javascript.
Похоже onClic
с =()
определяет метод незамещаемых класса и не может получить доступ к @module
(this.module
)
Как получить доступ к переменной, которую я создал в методе класса внутри функции обратного вызова в обещании?
Спасибо!
Edit: Использование двоеточие: Спасибо за -1;)
module.exports =
class DeclarationTree
createIndexModules: (files, length) =>
@modules = new Map()
console.log this.constructor.name # DeclarationTree
...
onClic: (text) =>
# PROBLEM **@modules** IS UNDEFINED
file_array = @modules.get(text)
console.log file_array
console.log file_array[0], file_array[1]
getProvider: ->
providerName: 'hyperclick-provider',
# getSuggestionForWord gives me a promise
getSuggestionForWord: (editor, text, range) ->
range: range, callback: ->
console.log this.constructor.name # Object
@onClic(text)
Получить Uncaught TypeError: this.onClic is not a function
ошибку.
Очевидно, что я не могу получить доступ ко всему, что связано с объектом this
в функции callback
.
Спасибо, я пробовал раньше, но получаю сообщение об ошибке, я думаю, что не могу получить доступ к чему-либо, связанному с объектом. (Я отредактировал мой вопрос) –
хорошо, я попробую то, что вы сказали, спасибо. –