问题: util.promisify将使用错误优先回调样式的异步函数转换为 Promise。但是,它似乎不适用于 AWS 的S3.upload(向下滚动到 .upload),这是一个使用错误优先回调格式的异步函数。
原始格式:
const params = {Bucket: 'bucket', Key: 'key', Body: stream};
s3.upload(params, function(err, result) {
if (err) {
throw new Error(err);
} else {
console.log(result);
}
});
承诺格式:
const params = {Bucket: 'bucket', Key: 'key', Body: stream};
const s3Upload = util.promisify(s3.upload);
s3Upload(params)
.then( (result) => {
console.log(result);
})
.catch( (err) => {
throw new Error(err);
});
但是以这种方式使用s3.upload
会引发错误,
TypeError:service.getSignatureVersion 不是函数
如果util.promisify
不一定适用于每个使用回调的异步函数,有没有办法预先确定一个函数是否可以使用它?或者,是否需要反复试验才能确定是否util.promisify
可行?