我对如何在异步内传递预定义函数感到有点困惑。
以下代码完美无缺
async.auto({
getAccessToken: function (callback) {
let x = {
access_token: signToken({ userId: user._id }),
client: req.user._id,
user: user._id,
scope: user.scopes,
expires: new Date().setDate(new Date().getMinutes() + 15)
};
callback(null, x);
}
}, (err, res) => {
console.log(res);
});
但我想在异步自动任务列表中使用预定义的函数。
例如: 为此,我需要传递一些值。我被困在这里。
async.auto({
getAccessToken: generateAccessToken // this is where i am stuck
}, (err, res) => {
Logger.info('here');
Logger.info(res);
});
generateAccessToken = (user, client, cb) => {
// cb(null, 'asd')
let accessToken = new AccessToken({
access_token: signToken({ userId: user._id }),
client: client,
user: user._id,
scope: user.scopes,
expires: new Date().setDate(new Date().getMinutes() + 15)
});
accessToken.save((err, token) => {
if (err) {
cb(err, null);
return;
}
cb(null, token);
return;
});
}
如果我传递值,我会收到以下错误:
return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';
^
TypeError: Cannot read property 'Symbol(Symbol.toStringTag)' of undefined
答案 0 :(得分:0)
使用以下解决方案解决了问题。
async.auto({
getAccessToken: ((cb) => {
generateAccessToken(user, req.user._id, cb)
})
}, (err, res) => {
Logger.info('here');
Logger.info(res);
});
不确定它是否是最佳解决方案。所以这个问题会保持一段时间。感谢