未使用异步定义回调

Not defined callback using async

我正在尝试使用 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, 我们会注意到这些函数中的每一个都接受回调参数,因此我们将在此处执行此操作:推送接受 callbackthen 调用的函数带有该回调的 listBuckets 函数。

operations.push(callback => {
  listBuckets(req.user.accessToken, 'myPrefix', callback)
})

请随时评论我的解释是否以及如何改进。