【问题标题】:when/node liftAll not working on s3 object何时/节点 liftAll 不适用于 s3 对象
【发布时间】:2015-03-10 09:01:39
【问题描述】:

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

有什么想法吗?

【问题讨论】:

    标签: node.js amazon-s3 promise when-js


    【解决方案1】:

    试试这个:

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

    那就做吧

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

    这对我有用。

    解释:您尝试修改的方法不是s3 对象本身的一部分,而是其原型的一部分。 When's node.liftAll 的 3 参数版本首先采用 source 对象,一个可选的转换函数,最后是目标对象(将提升的函数附加到上面)。

    所以我们从原型中获取函数并将承诺的版本附加到我们正在使用的对象上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-24
      • 2013-09-22
      • 2021-08-10
      • 2019-03-27
      • 2012-08-02
      • 1970-01-01
      • 2015-10-28
      • 2011-07-29
      相关资源
      最近更新 更多