Backbone.js backbone.fetch使用";return";仅返回未定义的值,而不是特定值

Backbone.js backbone.fetch使用";return";仅返回未定义的值,而不是特定值,backbone.js,Backbone.js,嗨,我是backbonejs的新手 我创建了一个函数来验证会话,并在调用此函数时通过路由使用if和else语句 var validateSession = function(){ var session = new sessionCollection(); session.fetch( { success : function(){ return true; }, error : function(){

嗨,我是backbonejs的新手

我创建了一个函数来验证会话,并在调用此函数时通过路由使用if和else语句

var validateSession = function(){
    var session = new sessionCollection();
    session.fetch( {
        success : function(){
            return true;
        },
        error : function(){
            CarRentalApp.trigger('admin:login');
            return false;
        }
    } );
};

问题是“return”语句不适合我。它不是返回true或false,而是返回undefined。我遗漏了什么吗?

我认为这是一个javascript问题,而不是主干问题。 Backbone.Collection.fetch方法是一种异步方法,这意味着如果执行此操作:

validateSession();
函数将调用session.fetch(),然后立即返回,它不会等待fetch()方法完成它的任务。validateSession函数中没有return语句,因此它只返回未定义的语句。当fetch()方法完成时,您将不会收到任何通知

如果您想获得session.fetch()的结果,我认为您最好在成功和错误两种情况下触发事件:

var validateSession = function(){
    var session = new sessionCollection();
    session.fetch( {
        success : function(){
            CarRentalApp.trigger('valid:true');
        },
        error : function(){
            CarRentalApp.trigger('valid:false');
        }
    } );
};
然后听这两个事件并分别做一些处理


希望这能有所帮助。

我认为这是一个javascript问题,而不是主干问题。 Backbone.Collection.fetch方法是一种异步方法,这意味着如果执行此操作:

validateSession();
函数将调用session.fetch(),然后立即返回,它不会等待fetch()方法完成它的任务。validateSession函数中没有return语句,因此它只返回未定义的语句。当fetch()方法完成时,您将不会收到任何通知

如果您想获得session.fetch()的结果,我认为您最好在成功和错误两种情况下触发事件:

var validateSession = function(){
    var session = new sessionCollection();
    session.fetch( {
        success : function(){
            CarRentalApp.trigger('valid:true');
        },
        error : function(){
            CarRentalApp.trigger('valid:false');
        }
    } );
};
然后听这两个事件并分别做一些处理


希望这能有所帮助。

我认为这是一个javascript问题,而不是主干问题。 Backbone.Collection.fetch方法是一种异步方法,这意味着如果执行此操作:

validateSession();
函数将调用session.fetch(),然后立即返回,它不会等待fetch()方法完成它的任务。validateSession函数中没有return语句,因此它只返回未定义的语句。当fetch()方法完成时,您将不会收到任何通知

如果您想获得session.fetch()的结果,我认为您最好在成功和错误两种情况下触发事件:

var validateSession = function(){
    var session = new sessionCollection();
    session.fetch( {
        success : function(){
            CarRentalApp.trigger('valid:true');
        },
        error : function(){
            CarRentalApp.trigger('valid:false');
        }
    } );
};
然后听这两个事件并分别做一些处理


希望这能有所帮助。

我认为这是一个javascript问题,而不是主干问题。 Backbone.Collection.fetch方法是一种异步方法,这意味着如果执行此操作:

validateSession();
函数将调用session.fetch(),然后立即返回,它不会等待fetch()方法完成它的任务。validateSession函数中没有return语句,因此它只返回未定义的语句。当fetch()方法完成时,您将不会收到任何通知

如果您想获得session.fetch()的结果,我认为您最好在成功和错误两种情况下触发事件:

var validateSession = function(){
    var session = new sessionCollection();
    session.fetch( {
        success : function(){
            CarRentalApp.trigger('valid:true');
        },
        error : function(){
            CarRentalApp.trigger('valid:false');
        }
    } );
};
然后听这两个事件并分别做一些处理


希望这能有所帮助。

您也可以使用
$.Deferred()

然后:

$.when(validateSession()).done(function(result){
});

您还可以使用
$.Deferred()

然后:

$.when(validateSession()).done(function(result){
});

您还可以使用
$.Deferred()

然后:

$.when(validateSession()).done(function(result){
});

您还可以使用
$.Deferred()

然后:

$.when(validateSession()).done(function(result){
});

这是正确的。。。有两条独立的时间线。如果您使用调试器完成此操作,您将点击
fetch
,然后在fetch之后继续执行下一条语句。(或者在本例中,退出该函数。)要单步执行
success
函数,您需要在那里设置一个单独的断点。谢谢,我之前尝试过这个实现,结果很好。我尝试过的另一种解决方案是在获取后使用deferred,然后返回defere.promise(),它也可以很好地工作。是的,更简单的是,您可以在成功和错误回调中执行您想要的操作——以防您不需要引用外部变量。这是正确的。。。有两条独立的时间线。如果您使用调试器完成此操作,您将点击
fetch
,然后在fetch之后继续执行下一条语句。(或者在本例中,退出该函数。)要单步执行
success
函数,您需要在那里设置一个单独的断点。谢谢,我之前尝试过这个实现,结果很好。我尝试过的另一种解决方案是在获取后使用deferred,然后返回defere.promise(),它也可以很好地工作。是的,更简单的是,您可以在成功和错误回调中执行您想要的操作——以防您不需要引用外部变量。这是正确的。。。有两条独立的时间线。如果您使用调试器完成此操作,您将点击
fetch
,然后在fetch之后继续执行下一条语句。(或者在本例中,退出该函数。)要单步执行
success
函数,您需要在那里设置一个单独的断点。谢谢,我之前尝试过这个实现,结果很好。我尝试过的另一种解决方案是在获取后使用deferred,然后返回defere.promise(),它也可以很好地工作。是的,更简单的是,您可以在成功和错误回调中执行您想要的操作——以防您不需要引用外部变量。这是正确的。。。有两条独立的时间线。如果您使用调试器完成此操作,您将点击
fetch
,然后在fetch之后继续执行下一条语句。(或者在本例中,退出该函数。)要单步执行
success
函数,您需要在那里设置一个单独的断点。谢谢,我之前尝试过这个实现,结果很好。我尝试的另一个解决方案是在获取后使用deferred,然后返回defere.promise(),这也非常有效。是的,更简单的是,您可以在成功和错误回调中执行您想要的操作——以防您不需要引用外部变量