我正在尝试理解this code
我已经使用下面的代码对其进行了简化,并尝试了解如何将此函数与回调一起使用。
function test(text, callback) {
function test2() {
callback(text);
}
}
并用
调用它test('sometext', function(response) {
console.log(response);
});
然而,test2永远不会被调用。
如何使用此回调调用test2?
答案 0 :(得分:2)
您需要致电text2
。你现在所做的就是定义它。有多种方法可以做到这一点。最简单的是调用函数:
function test(text, callback) {
(function test2() {
callback(text);
})();
}
请注意定义末尾的();
及其周围的括号。这将在test2
运行时调用test
。
另一种做同样事情的方法是在定义之后调用它:
function test(text, callback) {
function test2() {
callback(text);
}
test2();
}
或者,您可以将test
用作test2
的工厂并将其退回并在以后调用它:
function test(text, callback) {
return function test2() {
callback(text);
}
}
var f = test('logged', console.log);
f();
在链接到它的示例中,我不清楚如何调用回调,因为它看起来不像getTokenAndXhr
。也许在Chrome浏览器中有一些神奇的东西可以通过somekind的反射来调用它。
答案 1 :(得分:1)
你永远不会调用test2,只是声明它。明确地执行它:
function test(text, callback) {
function test2() {
callback(text);
}
test2();
}
或者从功能上来说没有理由声明像这样的作用域函数,只需触发回调:
function test(text, callback) {
callback(text);
}
答案 2 :(得分:0)
您必须实际拨打test2
。
您可以直接在test
内拨打电话。您可以返回test2
,然后稍后调用该返回值。等