gpt4 book ai didi

node.js - 当/Node liftAll 不适用于 s3 对象

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:30 25 4
gpt4 key购买 nike

我尝试使用 when/node 提升 Amazon S3 对象中的所有函数。

var when = require('when');
var nodefn = require('when/node');
var AWS = require('aws-sdk');
var s3 = new AWS.S3();

var promisedS3 = nodefn.liftAll(s3);

when(promisedS3.listBuckets())
.then(function(data) {
console.log(data);
})

但是,看起来正在打印出一个请求对象。我对这里发生的事情有点不知所措,如果我单独提升函数,我可以获得正确的结果,如下所示:

var listBucketsP = nodefn.lift(s3.listBuckets.bind(s3));

有什么想法吗?

最佳答案

试试这个:

nodefn.liftAll(s3.__proto__, undefined, s3);

然后就这样做

s3.listBuckets().then(function(data) { 
console.log(data);
});

这对我有用。

说明:您尝试修改的方法不是 s3 对象本身的一部分,而是其原型(prototype)的一部分。什么时候 node.liftAll的 3 个参数版本首先采用对象,一个可选的转换函数,最后是目标对象(将提升的函数附加到其上)。

因此,我们从原型(prototype)中获取函数,并将 promise 版本附加到我们正在使用的对象。

关于node.js - 当/Node liftAll 不适用于 s3 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25069146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com