执行recursion函数并保存callback
我有以下代码。 它运行一个简单的function,需要运行相同的function。 (recursion)
var Skit = function(callback) { validSkit(Math.random(),function(skit,data){ // Ajax callback if (skit == true) callback(data); // Works if skit is found else if (skit == false) Skit(callback); // Call Skit again [not working] }); }(function(skit){ console.log("Valid skit found!"); });
我得到的Skit is undefined!
我知道我可以做这个真正简单的function Skit()..
调用。 但这不是我的要求。 这可能吗?
你应该在这里使用一个命名函数expression式 :
(function Skit(callback) { validSkit(Math.random(),function(skit,data){ // Ajax callback if (skit == true) callback(data); // Works if skit is found else if (skit == false) Skit(callback); // Call Skit again [not working] }); })(function(skit){ console.log("Valid skit found!"); });
请注意, Skit
名称不会在外部作用域中泄漏,并且可用于堆栈跟踪中的debugging。
在这种情况下,var Skit
variables是返回的值。
(function (callback) { ... })(function () {console.log('I am argument function')});
如果你从它返回smth(在validSkit执行之后,对于exampe,或之前,无论),那么Skit的值将是返回值。 至于return语句不存在,它默认返回undefined。
所以你首先需要启动函数而不用调用它,然后用它的名字来调用它:
var Skit = function(callback) { validSkit(Math.random(),function(skit,data){ // Ajax callback if (skit == true) callback(data); // Works if skit is found else if (skit == false) Skit(callback); // Call Skit again [not working] }); }; Skit(function(skit){ console.log("Valid skit found!"); });