0

我目前正在尝试将一些旧的 CoffeeScript 代码(旧项目)移植到本机 NodeJS;我很难理解这到底在做什么?或 Node 中的等价物?

  builder.macro_extensions = [
      'iced'
      'nsi'
      'txt'
  ]

  await exec """
    find #{temp} | grep #{(_.map @macro_extensions, (x) -> "-e '\\.#{x}'").join ' '}
  """, {silent:on}, defer e,r
  if e then return cb e

如果有人能指出我正确的方向,那就完美了!

4

1 回答 1

1

假设exec返回一个 Promise,代码将 2 个参数传递给exec函数,等待返回的 Promise 完成,并将变量设置r为已解析的值。

如果出现任何问题(即承诺被拒绝),它会将变量设置e为该承诺的拒绝原因。

该代码的 JS 等效项是:

builder.macro_extensions = ['iced', 'nsi', 'txt'];

const grepArgs = _.map(
  this.macro_extensions, // or maybe builder.macro_extensions
  x => ` -e '\\.${x}'`,
).join(''); // -e '\.iced' -e '\.nsi' -e '\.txt'

let r;
try {
  r = await exec(`find ${temp} | grep ${grepArgs}`, {silent: on});
} catch (e) {
  return cb(e);
}

// ...
于 2019-06-19T22:15:07.407 回答