这是我的代码;
await GoogleDriveService.files.get({
fileId: id,
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
}, function(err, response) {
if (err) {
// logger.system.warn(err)
} else {
var imageType = response.headers['content-type'];
var base64 = Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
return dataURI;
}
});
但等待是行不通的。我正在使用内部函数,函数在dataURI
可验证之前返回undefined
。我该怎么办?
这是我的全部功能;
const uploadImage = async (filePath,name,mimeType) => {
const response = await GoogleDriveService.files.create({
requestBody: {
name,
mimeType,
},
media: {
mimeType,
body: fs.createReadStream(filePath),
},
});
await GoogleDriveService.files.get({
fileId: response.data.id,
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
}, function(err, response) {
var imageType = response.headers['content-type'];
var base64 = Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
return dataURI;
});
}
await
用于promise,它是回调函数的替代。两者都是处理像files.get
这样的异步操作的方法。
如果要await
结果,则必须从files.get
调用中省略第三个参数(回调函数(。
var response = await GoogleDriveService.files.get({
fileId: id,
alt: 'media'
}, {
responseType: 'arraybuffer',
encoding: null
});
var imageType = response.headers['content-type'];
var base64 = Buffer(response.data, 'utf8').toString('base64');
var dataURI = 'data:' + imageType + ';base64,' + base64;
return dataURI;