【发布时间】:2014-10-07 10:48:24
【问题描述】:
如果是这样:
getCol = (colId)->
dfrd = $q.defer()
if colId == "bacon"
dfrd.reject()
else
dfrd.resolve colId
dfrd.promise
getCols = (columns)->
$q.all(_.map(columns, (cs)-> getCol(cs)))
getCols(['eggs','juice']).then (cols)->
console.log cols # works
getCols(['eggs','juice','bacon']).then (cols)->
console.log cols # not even getting here
那么,在getCols() 中,我怎样才能只返回那些已解决的承诺?
【问题讨论】:
-
这是预期的(只有当所有的承诺都是
resolved时才会执行 $q 成功),如果出现错误,您可以毫无价值地解决。所以你会在数组中得到对应的未定义值。 -
好吧,我想我可以很容易地注入
Q而不是 angular,如果它在这种情况下派上用场 -
Here 这是与 $q 非常接近的副本,是否令人满意?
标签: javascript angularjs coffeescript promise q