当/节点liftAll不工作的S3对象

我正在尝试使用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); }) 

但是,它看起来像一个请求对象正在打印出来。 我对这里正在发生的事情感到不知所措,如果我单独提起这样的function,我可以得到正确的结果:

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

有任何想法吗?

尝试这个:

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

那就做吧

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

这对我有效。

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

所以我们从原型中取出函数,并将promisified版本添加到我们正在处理的对象中。