Node.js 使用蓝鸟承诺承诺gcloud
我想在gcloud包中推广所有的方法,但是我在这样做时出错了Node.js 使用蓝鸟承诺承诺gcloud,node.js,google-app-engine,promise,bluebird,es6-promise,Node.js,Google App Engine,Promise,Bluebird,Es6 Promise,我想在gcloud包中推广所有的方法,但是我在这样做时出错了 const Promise = require('bluebird'); const gcloud = Promise.promisifyAll(require('gcloud')); //no problem when passing a callback into it bucket.getFiles((err, files) => { console.log(files) }) //Complain error
const Promise = require('bluebird');
const gcloud = Promise.promisifyAll(require('gcloud'));
//no problem when passing a callback into it
bucket.getFiles((err, files) => {
console.log(files)
})
//Complain error -> bucket.getFilesAsync is not a function
bucket.getFilesAsync().then((files) => {
console.log(files)
})
当我在promisifyAll
之后调用async
方法时,它会抱怨bucket.getfileasync不是一个函数
,因此我尝试使用ES6承诺来提示该方法
const bucketFiles = new Promise((resolve, reject) => {
bucket.getFiles((err, files) => {
if (err) return reject(err);
resolve(files);
});
});
bucketFiles.then((files) => {
console.log(files)
})
这种使用ES6方法的Promission是有效的,但我不想通过这样做来保证每种方法。所以,我想让蓝鸟
为我承诺一切
我可以知道如何使用bluebird发布gcloud软件包吗?根据以下文档:
通过检查对象的属性来显示整个对象
以及为对象上的每个函数创建异步等效项
它的原型链
所以,你可以使用promisifygcloud
object,它与promisify bucket无关,因为它是另一个类
您可以为Bucket的每个实例执行此操作
Promise.promisifyAll(bucket);
或一次修补Bucket原型以供应用
Promise.promisifyAll(require('gcloud/lib/storage/bucket').prototype);
根据以下文件:
通过检查对象的属性来显示整个对象
以及为对象上的每个函数创建异步等效项
它的原型链
所以,你可以使用promisifygcloud
object,它与promisify bucket无关,因为它是另一个类
您可以为Bucket的每个实例执行此操作
Promise.promisifyAll(bucket);
或一次修补Bucket原型以供应用
Promise.promisifyAll(require('gcloud/lib/storage/bucket').prototype);
它是什么?
bucket
?它是一个对象,您可能需要承诺。promisifyAll(bucket)
可能是promisifyAll(require('gcloud/lib/storage/bucket').prototype)
?当您调用promisifyAll.promisifyAll(bucket)时,它正在工作
,我可以知道为什么这是有效的,但不是promisifyAll(require('gcloud'))它是什么bucket
?它是一个对象,您可能需要promisifyAll(bucket)
可能是promisifyAll(require('gcloud/lib/storage/bucket').prototype)
?当您调用promisifyAll.promisifyAll(bucket)时,它正在工作
,我可以知道为什么这是有效的,但不是promisifyAll(require('gcloud')