[英]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.