Я работаю, чтобы реорганизовать некоторые Node.js код, который использует Seq, и из документации и this answer, я понимаю, что я использую this()
, чтобы перейти к следующему .seq()
, но как я могу передать переменную к следующему .seq()
' s функция?Как передать переменную в следующий .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
[...]
Но что, вместо этого, приводит к ошибке (я не был в состоянии отследить, какая-то ошибка все же, хотя, потому что это как-то отправляется в функцию ErrorHandler, что похоже, скрывает ошибку). Как я должен это делать?
Учитывая, что 'this' кажется nodeback, попробуйте' это (нуль, данные) '. Но если 'saveData' не является асинхронным вообще, нет причин поместить' res.json (data) 'в свой собственный обратный вызов. – Bergi
Это сработало! Не решила мою проблему напрямую, но она привела к цепочке, которая ее исправила. :) Если вы положите это как ответ, я был бы рад принять его. –
done ... Обратите внимание, что если вы нашли решение самостоятельно, вы можете [отправить ответ самостоятельно] (http://stackoverflow.com/help/self-answer); особенно если это более полно – Bergi