是否可以在非阻塞回调函数中递归调用父函数?
例如:
function checkValidZip(zipInput) {
if (!zipInput.trim().match(/^(\d{5})$/g)) {
userInput("Please enter a valid 5 digit shipping zip code", function(zip){
//recursively call the parent function to check for valid zip
//(and continue to prompt the user until they enter proper zip)
return checkValidZip(zip);
});
}
//and return (only) the valid zip
return output(zipInput);
}
function userInput(param1, callback){
input = prompt(param1);
callback(input);
}
function output(param){
alert(param);
}
checkValidZip(prompt("hello"));
http://jsbin.com/omubab/1/edit
显然,问题在于代码将继续执行而无需等待调用回调函数(因此在此示例中不检查 zip),并且直到父返回后才调用递归函数的附加迭代(在此例子return output(zipInput);
)。
那么,再次,是否有可能有一个“自调用”递归函数作为回调?