【问题标题】:How to translate Promise.try in coffeeScript如何在咖啡脚本中翻译 Promise.try
【发布时间】:2017-01-28 03:07:22
【问题描述】:

您好,我正在寻找在 javascript 中生成此代码的 coffe 脚本中的代码

Promise = require('bluebird');

 myfunction = function(body) {
  return Promise.try(function() {
    return console.log('OK');
  });
};

我尝试过类似的方法:

   Promise      = require 'bluebird'

   myfunction: (body) ->
    return Promise.try ->
      return console.log('OK')

但结果是这样的:

Promise["try"](function() {});

有什么想法吗??提前致谢

【问题讨论】:

  • = 代替:,是worksforme?不知道为什么 console.log 会被删除。
  • 顺便说一句,你应该使用myfunction = Promise.method (body) -> console.log('OK')

标签: javascript coffeescript promise bluebird


【解决方案1】:

我猜你的文件中的缩进有些问题,因为上面是正确的,除了:

  1. 您不需要return,因为会自动返回函数/块中的最后一条语句。
  2. 您仍应使用= 进行变量分配,而不是:,后者用于在定义对象时分配属性。在 Coffeescript 中和在 Javascript 中是一样的。

这段代码:

Promise = require 'bluebird'

myfunction = (body) ->
  Promise.try ->
    console.log 'OK'

编译成:

var Promise, myfunction;

Promise = require('bluebird');

myfunction = function(body) {
  return Promise["try"](function() {
    return console.log('OK');
  });
};

【讨论】:

    【解决方案2】:

    关于 Promise.try -> 转译成 Promise["try"](function …) 这是因为 try 在 JS 中是 reserved keyword

    【讨论】:

    • 这仅在 ES3 之前是必需的,不过,Coffeescript 在这里相当保守。也可以使用Promise.attempt 作为别名。
    • 那么,有没有可能生成一个Promise.try??
    • @GutiMac 没关系,它们完全等价。
    • @gutimac 没关系,到底为什么需要 Promise.try?
    • 这是因为我必须生成一个完全等于 JS 代码的代码。但在这种情况下,如果不可能,我可以使用尝试。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 2011-06-30
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多