Javascript 如何传递到函数的Seq响应?

Javascript 如何传递到函数的Seq响应?,javascript,node.js,asynchronous,seq,Javascript,Node.js,Asynchronous,Seq,我想将异步函数getProjects的响应传递到Seq([644511340755])中 所以我试过了 ... var ids = pivotal.getProjects(function (err, data) { var ids = data.project.map(function(x) { return parseInt(x.id); }); console.log("IDS_i: ".red + ids); }); console.log("IDS_e: ".red + ids

我想将异步函数
getProjects
的响应传递到
Seq([644511340755])

所以我试过了

...
var ids = pivotal.getProjects(function (err, data) {
  var ids = data.project.map(function(x) { return parseInt(x.id); });
  console.log("IDS_i: ".red + ids);
});
console.log("IDS_e: ".red + ids);

Seq(ids)
  .parEach(function(project_id) {
....
日志:

我想也许我应该把这个放进
Seq

Seq()
   .seq(function() {
      pivotal.getProjects(function (err, data) {
        data.project.map(function(x) { return parseInt(x.id); });
      });
    }

但是在这种情况下如何将ID作为数组返回?

getProjects
也是异步的。基本规则:不能从异步函数返回任何值。您必须在回调函数中执行所有处理。在聚合阵列之前,将继续执行。因此,您需要的是
seq
方法:

Seq()
    .seq(function() {
        pivotal.getProjects(this);
    })
    .flatten()
    .seqEach(function(project) {
        var projectId = project.id;
        myService.someOtherAsyncAction(projectId, this);
    });

node seq
将负责将回调结果传递给下一个
seq
步骤,方法是将
this
作为回调函数传递给异步函数。这是如何将流和结果传递到下一步的<代码>展平将确保每个
项目
作为堆栈上的单个元素可用,以便您可以在下一步中执行
seqEach

好的,我理解,但是
项目.project.map(函数(x){return parseInt(x.id);})有一个问题如何将其作为数组传递到新步骤(
.parEach
)。我必须把它放到新函数中??你可以尝试
seqEach
,而不是
seq
,作为第二步。您可能需要将数组展平,这样每个
项目都会被视为堆栈上的一个元素。我将用一些伪代码更新答案。谢谢,有一件事看起来不是我需要的。我不能在flatte()上使用seqEach,因为
这个
[对象对象]
我必须以某种方式将
这个
设置为
这个项目
,然后我将得到
对象对象对象],[对象对象对象对象]
我不确定我是否完全理解,但你可以尝试使用
flatte(false)
。有关更多详细信息,请参阅文档。
Seq()
    .seq(function() {
        pivotal.getProjects(this);
    })
    .flatten()
    .seqEach(function(project) {
        var projectId = project.id;
        myService.someOtherAsyncAction(projectId, this);
    });