如何进行回调以返回承诺?我可以使用Promise.resolve()作为我的回调函数吗?

时间:2018-05-09 10:35:07

标签: node.js amazon-web-services callback promise amazon-dynamodb

我使用dynogels作为包装AWS dynamoDB表的框架,我用它来删除dynamoDB表上的项目,它们提供的函数是回调函数。

https://github.com/clarkie/dynogels //文档

// Destroy model using hash and range key
BlogPost.destroy('foo@example.com', 'Hello World!', function (err) { 
console.log('post deleted')
});    

但是我想使用promise而不是回调,那么我在想是否可以将Promise.resolve放入回调中?

BlogPost.destroy('foo@example.com', 'Hello World!', Promise.resolve())
.then(()=>{
    console.log('post deleted')
});

如何进行回调以返回承诺?到目前为止,我无法想到这一点。

1 个答案:

答案 0 :(得分:0)

有一个简单的工具,即util.promisify https://nodejs.org/api/util.html#util_util_promisify_original



let util = require('util')

// create a copy and call it yourself ...
util.promisify(BlogPost.destroy).call(BlogPost, 'foo@example.com', 'Hello World!')
.then(()=>{  
  console.log('post deleted')
});



// ... or create a alternative method:
BlogPost.prototype.destroyPromises = util.promisify(BlogPost.destroy)

// later
BlogPost.destroyPromises('foo@example.com', 'Hello World!')
.then(()=>{  
  console.log('post deleted')
});