Javascript $q,延期和部分申请

Javascript $q,延期和部分申请,javascript,angularjs,coffeescript,Javascript,Angularjs,Coffeescript,所以我想知道为什么这不能像预期的那样起作用: fn = -> dfrd = $q.defer() $timeout -> dfrd.resolve({foo:'bar'}) ,1000 return dfrd.promise displayData = (data)-> console.log(data.foo) fn().then(displayData) # doesn't work l

所以我想知道为什么这不能像预期的那样起作用:

fn = ->
   dfrd = $q.defer()
   $timeout ->
      dfrd.resolve({foo:'bar'})
    ,1000
    return dfrd.promise


displayData = (data)-> 
   console.log(data.foo)

fn().then(displayData)                  # doesn't work like that

fn().then((data)-> displayData(data))   # works if used like this - prints "bar"
那么为什么
然后
没有得到正确的咖喱呢?

。然后(cb)
是签名,而不是
。然后(数据)

您需要传递一个回调,以获取作为参数的数据:


.then(函数(数据){//use data here})

这就是我要说的:为什么不能使用它:
。那么(displayData)
其中
displayData
是一个回调需要签名的函数?它应该发射它并传递任何带着承诺返回的论点,对吗?我真的不知道你贴在那里的胡说八道是什么。但是
。然后
需要一个函数。你正在经过一个物体,你在说什么
var fn=function(arg){console.log(arg)};foo.then(fn)
你在哪里看到一个物体?你说的“咖喱”是什么意思?从CS的角度来看,没有什么不同。你能提供一个演示来说明什么不起作用吗?你知道吗?事实上它确实有效,我的实际代码中可能有错误:(