我有一个处理器功能,需要一个“CMD”对象,并返回一个承诺其中分辨率是通过在相同的“CMD”对象(具有添加的响应密钥)。 reduce
这里是when.reduce
reduce = require('when').reduce;
//return processor(cmds[0])
return reduce(cmds, function(processor, cmd) {
Debug.L1('running processor for component ', cmd.component)
return processor(cmd)
})
.then(cmds => {
Debug.L1('cmds with responses\n', cmds)
let response = cmds.map(cmd => {
return cmd.response
})
console.log('the complete response is\n', response)
});
这并没有什么,它得到的.then
,但承诺的阵列永远不会触发,再也看不到调试running processor...
如果我只运行单一的处理器它的伟大工程CMD [0],CMDS [1],等等。
return processor(cmds[0])
//return reduce(cmds, function(processor,cmd) {
// Debug.L1('running processor for component ', cmd.component)
// return processor(cmd) })
我缺少的是在这里吗? 他们的API和维基例子没有给我任何的洞察力。
重要更新:下面的答案的工作,但抛出未处理拒绝错误。 罪魁祸首是当图书馆。 这似乎不再活跃,因为节点6.我切换到蓝鸟尚未更新,并没有任何改变,以下面列出的代码工作正常。