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使用相同的逻辑),他们说,他们正在传递它,就像我在回答中所做的那样。