我正在尝试使用async
来制作同步流程。
按照this post中的示例,我确实按如下方式实现了代码:
function listBuckets(accessToken, prefix, callback) {
var url = 'https://www.googleapis.com/storage/v1/b'
request.get({
url: url,
auth: {
'bearer': accessToken
}
}, function(err, res) {
console.log('API Endpoint: ' + url);
console.log('Status Code: ' + res.statusCode);
console.log('Response Body:\n' + res.body);
callback(null, {
statusCode: res.statusCode,
body: res.body
});
});
}
router.get('/list', oauth2.required, (req, res, next) => {
var operations = [];
operations.push(listBuckets(req.user.accessToken, 'myPrefix', callback));
async.series(operations, function (err, results) {
const statusCode = results[0].statusCode;
const body = results[0].body;
});
});
但是,我收到以下错误:ReferenceError: callback is not defined
。
你能帮我指出我做错了吗?
答案 0 :(得分:3)
这一行:
operations.push(listBuckets(req.user.accessToken, 'myPrefix', callback));
现在这样做,是用这些参数调用listBuckets
,然后将该结果推送到操作数组。
您要做的是将功能推送到阵列。 If we look at the docs for the async lib,我们会注意到这些函数中的每一个都接受一个回调参数,所以我们在这里执行此操作:推送一个接受callback
,然后调用listBuckets函数的函数回调。
operations.push(callback => {
listBuckets(req.user.accessToken, 'myPrefix', callback)
})
随时评论是否以及如何改进我的解释。