AWS Javascript SDK with Promises
AWS Javascript SDK with Promises
我正在尝试使用 AWS Javascript SDK 访问 S3。我正在使用 Promises with 'Q' 库。但是它不起作用。
我也设置了Q依赖。
var Q = require('q');
AWS.config.setPromisesDependency(Q);
这是我的代码:
var listBucketPromise = s3.listBuckets().promise();
listBucketPromise.then(
function (response) {
console.log(" response = " + response );
} ,
function (error) {
console.log(" error = " + error);
}
);
这显示在控制台上:
response = function (resolve, reject) {
self.on('complete', function(resp) {
if (resp.error) {
reject(resp.error);
} else {
// define $response property so that it is not enumberable
// this prevents circular reference errors when stringifying the JSON object
resolve(Object.defineProperty(
resp.data || {},
'$response',
{value: resp}
));
}
});
self.runTo();
}
我正确设置了有效的 s3 客户端。回调格式有效:
s3.listBuckets(function (err, data) {
console.log(data);
});
为什么承诺代码不起作用?
您需要将 Promise
构造函数传递给 setPromisesDependency
。您使用的 Q
function 不需要回调,当使用典型的 promise 执行器回调调用时,它只返回一个用该函数值实现的 promise。
您可以使用 Q.Promise
instead, which also is documented in this blog post's example:
// Use Q implementation of Promise
AWS.config.setPromisesDependency(require('Q').Promise);
我正在尝试使用 AWS Javascript SDK 访问 S3。我正在使用 Promises with 'Q' 库。但是它不起作用。 我也设置了Q依赖。
var Q = require('q');
AWS.config.setPromisesDependency(Q);
这是我的代码:
var listBucketPromise = s3.listBuckets().promise();
listBucketPromise.then(
function (response) {
console.log(" response = " + response );
} ,
function (error) {
console.log(" error = " + error);
}
);
这显示在控制台上:
response = function (resolve, reject) {
self.on('complete', function(resp) {
if (resp.error) {
reject(resp.error);
} else {
// define $response property so that it is not enumberable
// this prevents circular reference errors when stringifying the JSON object
resolve(Object.defineProperty(
resp.data || {},
'$response',
{value: resp}
));
}
});
self.runTo();
}
我正确设置了有效的 s3 客户端。回调格式有效:
s3.listBuckets(function (err, data) {
console.log(data);
});
为什么承诺代码不起作用?
您需要将 Promise
构造函数传递给 setPromisesDependency
。您使用的 Q
function 不需要回调,当使用典型的 promise 执行器回调调用时,它只返回一个用该函数值实现的 promise。
您可以使用 Q.Promise
instead, which also is documented in this blog post's example:
// Use Q implementation of Promise
AWS.config.setPromisesDependency(require('Q').Promise);