在Atom中,未使用promise和函数定义模块

时间:2017-01-03 23:58:07

标签: javascript coffeescript atom-editor

我正在使用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)




当然,在调用onClic()之前定义了@modules。

我不知道如何解决它,我是Javascript的新手。

onClic = ()看似@module定义了一种非类别方法,无法访问this.modulemodule.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)

如何访问我在课程中创建的变量' promise中回调函数内的方法?

谢谢!

编辑:使用冒号:感谢-1;)



Uncaught TypeError: this.onClic is not a function




收到this错误。

显然,我无法访问callback函数中与module.exports.listen = function listen(server, options) { 对象相关的任何内容。

1 个答案:

答案 0 :(得分:0)

这可能就像在onClic之后使用冒号而不是等号一样简单。这是你的意思吗?

现在coffeescript只是在该类声明范围内编写函数表达式,这就是为什么它无法访问@ / this

编辑

您正在尝试使用this脱离上下文。您需要将函数绑定到要引用的范围。在coffeescript中,您可以使用胖箭头功能轻松完成此操作。