gpt4 book ai didi

javascript - 如何使用 Seq 将变量传递到下一个 .seq?

转载 作者:行者123 更新时间:2023-12-03 09:09:23 29 4
gpt4 key购买 nike

我正在努力重构一些使用 Seq 的 Node.js 代码,以及文档和 this answer ,我知道我使用 this() 转到下一个 .seq(),但是如何将变量传递给下一个 .seq( )的功能?

这是我迄今为止尝试过的:

$()
.seq(function() {
User.findById(req.user._id, this);
})
.seq(function(user) {

if (!user) { return res.json(400, {'user': 'User not found.'} ); }

var data = req.body;

saveData(data, user, true);

this();

})
.seq(function(data) {

return res.json(data);

})
.catch(next);

第一个 .seq() 直接移动,无需任何 this() 调用,但第二个 .seq() 不会除非我调用 this(),否则请移至下一个。然而,在到达最后一个 .seq 时,data 现在是 undefined。因此,我尝试了这个:

[...]

saveData(data, user, true);

this(data); //Added "data" here

[...]
但是,这会导致错误(不过,我还无法追踪到哪种错误,因为它以某种方式被发送到似乎隐藏错误的错误处理函数)。我应该如何处理这个问题?

最佳答案

由于该回调不是异步的,因此没有理由将其放入自己的 seq 调用中。就这么做


.seq(function(user) {
if (!user)
return res.json(400, {'user': 'User not found.'} );
var data = req.body;
saveData(data, user, true);
return res.json(data);
})

否则,如果您确实需要传递数据,this 确实遵守 Node 回调约定 - 第一个参数指定错误,第二个参数指定结果值。因此,您必须首先传递 null:


this(null, data);

关于javascript - 如何使用 Seq 将变量传递到下一个 .seq?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32126066/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com