这是一个简单的node.js应用程序。我正在使用Zombie模块提供的Browser.visit(url, callback)
(http://zombie.labnotes.org),Browser.visit()
将在不确定的未来使用不同的上下文将回调称为(error, browser, status)
。我的回调需要一些额外的信息来完成它的工作。
到目前为止,我可以将其作为“工作”:
function test(title, url) {
var browser = new Browser();
browser.visit(url, function (e, browser, status, thetitle)
{
// generate info using the title if browser visited url successfully
}
.bind(undefined, browser, undefined, title);
}
test("foo", fooUrl);
test("bar", barUrl);
但是有一个问题,bind()
只是绕过了错误和状态参数。这似乎不是正确的方法。我怎么能将附加信息传递给这个回调?
仅供参考:刚刚得到确认,Zombie.js的API文档适用于1.4.x,2.0.0-Alpha API尚未最终确定。 https://groups.google.com/forum/?hl=en#!topic/zombie-js/qOS0W_cMCgQ
答案 0 :(得分:0)
理解您的问题有点困难,我不确定您使用bind
的原因,但也许这就是您要实现的目标?
的Javascript
function Browser(url) {
this.url = url;
}
Browser.prototype.visit = function (url, fn) {
var self = this,
error = 'error',
status = 'status';
setTimeout(function () {
fn(error, self, status);
}, 1000);
};
function test(title, url) {
var browser = new Browser(url);
browser.visit(url, (function (theTitle) {
return function (theError, theBrowser, theStatus) {
// generate info using the title if browser visited url successfully
console.log('theError: ', theError);
console.log('theBrowser: ', theBrowser);
console.log('theStatus: ', theStatus);
console.log('theTitle: ', theTitle);
};
}(title)));
}
test('hello', 'world');
test('goodbye', 'mum');
输出
theError: error
theBrowser: Browser {url: "world", visit: function}
theStatus: status
theTitle: hello
theError: error
theBrowser: Browser {url: "mum", visit: function}
theStatus: status
theTitle: goodbye
上
答案 1 :(得分:0)
不需要仅使用bind
将匿名函数传递给browser.visit
访问title
。这可行:
function test(title, url) {
var browser = new Browser();
browser.visit(url, function (e, browser, status) {
console.log(title);
});
}
title
中console.log(title)
的值与title
函数的test
参数值相同。
请注意,无论是同步还是异步调用传递给browser.visit
的回调,这都有效。