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);
});