如何将参数传递给 Node 的 Q 库的 (denodeify) 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);
});
在下面的代码中,我希望在调用 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);
});