函数支持回调和返回样式

时间:2015-02-17 15:10:50

标签: javascript node.js coffeescript

我想知道如下功能的实现。

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

externalFunction = () ->
  return true

或异步:

externalFunction = (done) ->
  done(true)

所以,我想区分这些类型的函数

当我收到同步功能时,我想调用它然后使用它的结果:

result = externalFunction()
doSomething result

当我收到一个异步的时候,我想先等待它的回调:

externalFunction (result) ->
  doSomething result

最好的方法是什么?

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

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

1 个答案:

答案 0 :(得分:0)

这可能是一个简单的答案,但仍希望能有更好的答案。

myCallbackAfterFunction = (result) ->
  ...

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