首页 > 解决方案 > 如何进行回调以返回承诺?我可以使用 Promise.resolve() 作为我的回调函数吗?

问题描述

我使用 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')
});

如何进行回调以返回承诺?到目前为止,我认为无论如何都做不到。

标签: node.jsamazon-web-servicescallbackpromiseamazon-dynamodb

解决方案


有一个简单的工具,即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')
});


推荐阅读