CoffeeScript 承诺与函数定义链接
coffeescript promise chaining with function definition
当在咖啡脚本中做承诺链接时,定义的函数需要绑定到"this"。
$q.fcall somecall
.then ((url)->
dosomething()
).bind(this)
.catch (err)->
console.log 'error occured', err
但是,以上编译成以下内容,这是错误的。那么如何正确书写呢?或者有没有办法让咖啡脚本来表示这一点?
$q.fcall(somecall).then(((function(url) {
dosomething()
}).bind(this))["catch"](function(err) {
return console.log('error occured', err);
})));
使用=>
而不是自己绑定它,它会更容易阅读并且正确。
$q.fcall somecall
.then (url) =>
dosomething()
.catch (err)->
console.log 'error occured', err
但是,这实际上没有意义,因为您没有在函数中引用this
。您可能只想将dosomething
直接传递给then()
,以便保留其ThisBinding
。
仅仅因为您可以使用匿名函数并不意味着您必须这样做。提供回调名称通常会导致更清晰的代码:
some_descriptive_name = (url) ->
dosomething()
the_error = (err) ->
console.log 'error occurred', err
$q.fcall somecall
.then some_descriptive_name.bind(@)
.catch the_error
或:
some_descriptive_name = (url) => # fat-arrow instead of bind
dosomething()
the_error = (err) ->
console.log 'error occurred', err
$q.fcall somecall
.then some_descriptive_name
.catch the_error
如果你的函数只是单行,那么匿名函数很好,但如果它们更长,很容易迷失在 CoffeeScript 的空白中。
相关文章:
- LinkedIn共享链接图片未使用自定义url更新
- 通过Rails中的自定义Jquery对话框处理链接的确认
- 如何在单击超链接时调用同一函数中定义的函数
- 未捕获的ReferenceError:链接未定义React
- 点击tpl链接时,ExtJS 4.2自定义组件触发事件
- 检查链接对象形式中未定义属性的最佳实践是什么
- jQuery使用自定义select()自动完成:自定义HTML中的超链接
- 根据课程自定义字段在课程页面上添加链接
- 自定义链接的打开方式
- Basic jQuery Slider中上一张/下一张幻灯片的自定义链接触发器
- CoffeeScript 承诺与函数定义链接
- 将自定义链接添加到饼图中的系列/数据部分(高图表.js)
- 谷歌分析自定义链接归因
- 从Angular.js中的自定义链接获取URL参数
- 自定义链接在facebook分享帖子
- 使用javascript替换基于查询字符串的自定义链接id
- 使用jquery定义如何在基于网格的数据表插件中添加自定义链接按钮
- JavaScript -当我更改链接的href时未定义链接
- 自定义链接导航的谷歌搜索快捷方式
- 使用css自定义链接