在下面的代码中,我希望变量a, b, c
在调用processhttprequest()
时作为参数传递。
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或任何其他承诺库支持。
答案 0 :(得分:5)
您可以像这样使用.bind()
:
httprequestpromise.then(processhttprequest.bind(null, a, b, c));
这将创建一个虚拟函数,在调用a
之前添加参数b
,c
和processhttprequest()
。
或者,您可以使用自己的存根函数手动执行此操作:
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);
});
}
答案 1 :(得分:0)
Function.prototype.bind
不接受数组。修复bind
的使用后,您的代码应该按照您的描述工作。
尝试
httprequestpromise.then(processhttprequest.bind(null, a, b, c));
或
httprequestpromise.then(function(){
processhttprequest(a, b, c);
});