未使用异步定义回调
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, 我们会注意到这些函数中的每一个都接受回调参数,因此我们将在此处执行此操作:推送接受 callback
、then 调用的函数带有该回调的 listBuckets 函数。
operations.push(callback => {
listBuckets(req.user.accessToken, 'myPrefix', callback)
})
请随时评论我的解释是否以及如何改进。
我正在尝试使用 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
、then 调用的函数带有该回调的 listBuckets 函数。
operations.push(callback => {
listBuckets(req.user.accessToken, 'myPrefix', callback)
})
请随时评论我的解释是否以及如何改进。