重复JavaScript函数并返回初始回调?

重复JavaScript函数并返回初始回调?,javascript,function,callback,Javascript,Function,Callback,是否可以在JavaScript中再次调用自己的函数,并且在再次调用自己后,最终运行初始回调函数? 我将在代码中解释我的意思 //on page load getProviderNextAppointment(null, function(nextAppointment) { otherFunction(); //<----- how can I always end up back here, no matter what? }); //getProviderNextApp

是否可以在JavaScript中再次调用自己的函数,并且在再次调用自己后,最终运行初始回调函数?

我将在代码中解释我的意思

//on page load
getProviderNextAppointment(null, function(nextAppointment) {

    otherFunction(); //<----- how can I always end up back here, no matter what?

});


//getProviderNextAppointment function
function getProviderNextAppointment(startDate, callback) {

    getNextAppointment('provider', startDate, function(data) {

        //if provider has schedule
        if(!$.isEmptyObject(data.AllProviders)) {

            //set provider params
            //nextAppointment = data.x

            //callback
            if(typeof callback === 'function') {
                return callback(nextAppointment); //callback from call on page load
            }

        } else {

            if(data.ErrorCode !== 'StartDateTooFarInFuture') {

                /*---------->
                 * this is where we this function calls itself again;
                 * but when it hits the callback above (provider
                 * has schedule), or when it hits the callback
                 * below (last group of appointments), it
                 * should run the initial callback to
                 * execute otherFunction()
                 <----------*/
                getProvidersNextAppointment(data.LatestDate);

            } else { //hit last group of appointments

                if(typeof callback === 'function') {
                    return callback(null); //callback from call on page load
                }

            }

        }

    });

}
//页面加载时
GetProviderNextAppoint(null,函数(NextAppoint){
otherFunction()//
*这就是我们这个函数再次调用自身的地方;
*但是当它点击上面的回调时(提供程序
*具有时间表),或者当它点击回调时
*在下面(最后一组预约),它
*应该运行对的初始回调
*执行其他函数()

如果需要保留对初始回调函数的引用,则可以通过递归调用传递它

从以下位置更改递归调用:

getProvidersNextAppointment(data.LatestDate);
致:


现在,嵌套函数上下文将有一个对原始回调函数的引用,从理论上讲,这可能会在递归树上进一步级联,直到回调函数最终执行。

我不清楚您在问什么。如果您能描述您试图满足哪一个更高级别的需求,那将更有帮助olve,提供您期望的输入和输出。@trincot,您的答案中有了。这正是我需要做的,保留对初始回调函数的引用,并将其传递给递归。是的,这绝对是如何做到的!不确定为什么我没有想到这一点。当然,它正在传递相同的回调函数谢谢!
getProvidersNextAppointment(data.LatestDate, callback);