6

AWS S3 非同期関数を持ち上げようとしていますが、奇妙なエラーが発生します。次のコードを考えると、

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

var getObjectP = nodefn.lift(s3.getObject);

getObjectP({
    Bucket: 'bucket_name',
    Key: 'key_name'
})
.then(function(data) {
    ...
}, function(err) {
    ...
});

このエラーが発生します。

Object #<Object> has no method 'makeRequest'

通常は次のgetObjectようになります (Promise の代わりにコールバックを使用すると問題なく動作します)。

s3.getObject({ ... }, function(err, data) {
    ...
});

私は誤用していnodefn.liftますか?それはかなり簡単に思えます。ここに興味のある人のためのドキュメントがあります。https://github.com/cujojs/when/blob/master/docs/api.md#nodelift

4

2 に答える 2

19

メソッドとして呼び出されていないため、メソッドのコンテキストが間違っている可能性があります。それを試してくださいbind

var getObjectP = nodefn.lift(s3.getObject.bind(s3));
于 2014-07-10T23:30:52.337 に答える