未使用异步定义回调



我正在尝试使用async来制作同步流。

按照这篇文章中的示例,我确实实现了如下代码:

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,然后将该结果推送到操作数组。

您要做的是将函数推送到数组。如果我们查看异步库的文档,我们会注意到这些函数中的每一个都接受一个回调参数,所以我们在这里这样做:推送一个接受callback的函数,然后使用该回调调用 listBuckets 函数。

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

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

最新更新