node.js - 如何进行回调以返回承诺?我可以使用 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')
});
如何进行回调以返回承诺?到目前为止,我认为无论如何都做不到。
解决方案
有一个简单的工具,即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')
});
推荐阅读
- sql - 将多行的属性合并为一行
- javascript - 如何使用 javascript 一遍又一遍地创建函数和图像标签?
- java - 如何从母目录执行两个不同子目录中的两个java文件
- python - ValueError:“ConcreteFunction”的所有输入都必须是张量
- javascript - SocketIO App 在 Heroku 上表现异常但在本地工作
- count - 在使用不同节点搜索值后计算不同代码中的唯一值(XSLT 1)
- c# - Xamarin 从数据模板中的标签中提取文本(列表视图)
- django - Django - 更改数据库上的数据字段
- javascript - d3.json - 无法在本地加载 json 文件,只能从 URL
- java - 实施谷歌空间