Javascript 函数支持一次回调和返回样式

Javascript 函数支持一次回调和返回样式,javascript,node.js,coffeescript,Javascript,Node.js,Coffeescript,我想知道下面这样的功能的实现 作为输入,我收到一个函数,它可以是同步的: externalFunction = () -> return true externalFunction = (done) -> done(true) 或异步: externalFunction = () -> return true externalFunction = (done) -> done(true) 所以,我想区分这些类型的函数 当我收到一个同步函数时,我想调

我想知道下面这样的功能的实现

作为输入,我收到一个函数,它可以是同步的:

externalFunction = () ->
  return true
externalFunction = (done) ->
  done(true)
或异步:

externalFunction = () ->
  return true
externalFunction = (done) ->
  done(true)
所以,我想区分这些类型的函数

当我收到一个同步函数时,我想调用它,然后使用它的结果:

result = externalFunction()
doSomething result
当我收到一个异步消息时,我想先等待它的回调:

externalFunction (result) ->
  doSomething result
最好的方法是什么

现在我想知道这样的事情:

promise(externalFunction(myCallback)).complete (err) -> ...

这也许是一个简单的答案,但仍然希望有更好的答案

myCallbackAfterFunction = (result) ->
  ...

functions = [...]
for func in functions
  if func.length != 0
    func(myCallbackAfterFunction)
  else
    result = func()
    myCallbackAfterFunction(result)

我是对的,你有一个外部函数,你不知道它是同步的还是异步的,所以你想支持这两个变量?请检查我对你的问题的编辑。谢谢你Leonid,刚刚在mocha聊天上被问到(mocha使用相同的逻辑),他们说,他们正在传递它,就像我在回答中所做的那样。