【问题标题】:Jquery .when and deferred object not workingJquery .when 和延迟对象不起作用
【发布时间】:2014-03-21 16:50:56
【问题描述】:

我正在使用backbone.js 构建一个移动应用程序。

我需要通过检查服务器来确保设置项目详细信息。该应用程序在设置详细信息之前无法继续。我使用 .when() 和延迟对象:

    console.log('before when ');

    $.when(that.setProjectDetailsWait()).done(function(data){
       console.log('after when setProjectDetailsWait and feed domain is ');
       console.log(feed_domain);
    });


    setProjectDetailsWait: function(){

        require(["app/models/project"], function (projectModel) {

                console.log('in setProjectDetailsWait');

                project = new projectModel.Project({id:project_title});

                return project.fetch({
                    api: true,
                    headers: {device_id:standard_device_id,api_key:standard_api_key},        
                    success: function (data) {

                        console.log('in setProjectDetailsWait success');

                        flickr_user_id = data.get('flickr_user_id');
                        flickr_api_key = data.get('flickr_api_key');
                        feed_domain = data.get('feed_domain');

                    },
                    error:   function(model, xhr, options){
                       console.log('in setProjectDetails error');
                    },
                });     
        });    
    },

但是,输出是:

before when  router.js:237
after when setProjectDetailsWait and feed domain is  router.js:240
undefined router.js:241
now getting generic router.js:246
in setProjectDetailsWait router.js:733
in setProjectDetailsWait success 

所以 .when() 中的所有内容都会立即执行,而不是等待 setProjectDetailsWait() 完成。为什么这不起作用??

【问题讨论】:

  • require() 不会返回承诺/延迟,是吗?

标签: javascript jquery backbone.js jquery-deferred


【解决方案1】:

问题是在 setProjectDetailsWait() 中使用 require。当我删除 require 并在路由器顶部使用它时, .when() 工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-18
    • 2011-12-17
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多