如何将预定义函数传递给异步
How to pass predefined function to async
我有点困惑如何在异步中传递预定义函数。
以下代码完美运行
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
使用以下解决方案解决了问题。
async.auto({
getAccessToken: ((cb) => {
generateAccessToken(user, req.user._id, cb)
})
}, (err, res) => {
Logger.info('here');
Logger.info(res);
});
不确定它是否是最佳解决方案。所以会让这个问题开放一段时间。谢谢
我有点困惑如何在异步中传递预定义函数。
以下代码完美运行
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
使用以下解决方案解决了问题。
async.auto({
getAccessToken: ((cb) => {
generateAccessToken(user, req.user._id, cb)
})
}, (err, res) => {
Logger.info('here');
Logger.info(res);
});
不确定它是否是最佳解决方案。所以会让这个问题开放一段时间。谢谢