函数同时支持回调和返回样式

Function support callback and return style at once

本文关键字:返回 样式 回调 支持 函数      更新时间:2023-12-08

我想知道以下功能的实现情况。

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

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)