繁体   English   中英

jQuery .when和延迟对象不起作用

[英]Jquery .when and deferred object not working

即时通讯使用lobb.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()结束。 为什么这不起作用?

问题是在setProjectDetailsWait()中使用了require。 当我删除需求并在路由器顶部使用它时,.when()有效

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM