我正在尝试使用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
。
你能帮我指出我做错了什么吗?
这一行在这里:
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)
})
随意评论是否以及如何改进我的解释。