Javascript 节点请求库-承诺重构
我正在使用节点请求库,该库可以在以下链接中找到 我有许多函数,如下所示Javascript 节点请求库-承诺重构,javascript,node.js,request,Javascript,Node.js,Request,我正在使用节点请求库,该库可以在以下链接中找到 我有许多函数,如下所示 function doRequest() { return new Promise(function(resolve,reject) { request('some-url', function(error,response,body) { if (!error && response.statusCode === 200) {
function doRequest() {
return new Promise(function(resolve,reject) {
request('some-url', function(error,response,body) {
if (!error && response.statusCode === 200) {
resolve(body)
}
});
});
}
然后我这样调用这些函数
doRequest()
.then(function(response){
console.log(response);
})
我的问题是,有没有一种不用创建新承诺就可以编写doRequest函数的方法?我觉得它看起来很笨拙,可能是一个反模式?在AngularJS中,你经常看到人们使用
$q.defer()
进行http调用时,http调用已返回承诺时
任何建议都很好。如果您希望根据请求方法的结果手动做出承诺,那么这是正确的方法,尽管也需要错误时拒绝调用
然而,该请求库已经使用了Bluebird Promise库的Promisify函数,它可以自动将这些函数包装成返回承诺的函数。不,这是自己做的正确方法,不是反模式,尽管发现有人已经让Promisify库成为可能并不让我感到惊讶。事实上,在Git repo中已经有了使用Promisify with Request的测试用例。感谢您的回复。为了简洁起见,省略了拒绝位!