【发布时间】: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