如何将参数传递到节点's Q库's(去神化)promise处理程序
How to pass parameters to Node's Q library's (denodeify) promise handler
在下面的代码中,我希望在调用processhttprequest()
时将变量a, b, c
作为参数传递。
var q = require("q");
var request = require('request');
function myfun()
{
var a, b, c;
//do some work here
var httprequest = q.denodeify(request);
var httprequestpromise = httprequest(httpoptions);
httprequestpromise.then(processhttprequest);
}
我试过httprequestpromise.then(processhttprequest.bind([a, b, c]));
,但没有成功。这是否由Q或任何其他promise库支持。
您可以这样使用.bind()
:
httprequestpromise.then(processhttprequest.bind(null, a, b, c));
这将创建一个伪函数,在调用processhttprequest()
之前添加参数a
、b
和c
。
或者,您可以使用自己的存根函数手动完成,如下所示:
function myfun()
{
var a, b, c;
//do some work here
var httprequest = q.denodeify(request);
var httprequestpromise = httprequest(httpoptions);
httprequestpromise.then(function(result) {
return processhttprequest(a, b, c, result);
});
}
Function.prototype.bind
不接受数组。一旦您修复了bind
的使用,您的代码就应该按照您所描述的那样工作。
尝试httprequestpromise.then(processhttprequest.bind(null, a, b, c));
或
httprequestpromise.then(function(){
processhttprequest(a, b, c);
});
相关文章:
- 使用promise和mongoose对文档进行排序
- 测试Angular Service解决错误回调中的promise
- 节点协同与生成器和Promise并行流量控制
- 根据是否解析了 Promise 从函数返回值
- 将一个方法转换为promise:Nodejs
- 函数在promise被解析后被调用,但Jasmine未通过测试.为什么?
- js promise没有正确关闭
- Angularjs使用“;这个“;promise内的关键字回调
- AngularJS和promise值在调用本地函数时的效果-未定义
- 在ES6 Promise中,我应该在解决/拒绝之前使用return吗
- 以同步方式获取Javascript Promise的值
- NodeJS和pg promise,捕获PostgreSQL异常
- AngularJS使用http进行promise处理
- Angular promise return"未定义的“;值.NET MVC
- Promise函数在.then之后未运行函数化
- 如何为javascript promise进行阻塞并返回解析结果
- 将其中一个异步方法重写为使用promise的方法
- 通过AngularJS promise下载一个文件
- 如何在AngularJS视图中使用promise(ng-show)
- 如何将参数传递到节点's Q库's(去神化)promise处理程序