RequireJS, $.Deferred 怎么样?
RequireJS, $.Deferred how to?
代码如下
define(['jquery'], function ($) {
var App = function () {
var settings = {};
var identity = {};
var dSettings = $.when($.getJSON("models/settings.json"));
var dIdentity = $.when($.getJSON("models/identity.json"));
var dApp = $.when(dSettings, dIdentity);
dSettings.done(function (data) {
settings = data;
console.log(settings);
});
dIdentity.done(function (data) {
identity = data;
});
return {
"settings" : settings,
"identity" : identity
};
};
return App();
});
我想创建一个模块,谁可以"know"我的设置和身份。
Return 将在延迟对象被解析并且模块 App.js 具有空的设置和身份对象之前执行。
我该怎么做?
据我所知,您希望模块获取您的设置和身份数据,并return将其作为 AMD 模块。不幸的是,你在那里有一个异步操作。您可以做的最好的事情是 return 来自模块的承诺,并让依赖模块附加 then
.
// SettingsAndIdentity.js
define(['jquery'], function ($) {
// $.when resolves when all promises passed resolves
return $.when($.getJSON("models/settings.json"), $.getJSON("models/identity.json"))
});
// foo.js
define(['SettingsAndIdentity'], function(SettingsAndIdentity){
// Since SettingsAndIdentity is a promise, we just attach then
SettingsAndIdentity.then(function(settings, identity){
// start doing things here
});
});
代码如下
define(['jquery'], function ($) {
var App = function () {
var settings = {};
var identity = {};
var dSettings = $.when($.getJSON("models/settings.json"));
var dIdentity = $.when($.getJSON("models/identity.json"));
var dApp = $.when(dSettings, dIdentity);
dSettings.done(function (data) {
settings = data;
console.log(settings);
});
dIdentity.done(function (data) {
identity = data;
});
return {
"settings" : settings,
"identity" : identity
};
};
return App();
});
我想创建一个模块,谁可以"know"我的设置和身份。 Return 将在延迟对象被解析并且模块 App.js 具有空的设置和身份对象之前执行。
我该怎么做?
据我所知,您希望模块获取您的设置和身份数据,并return将其作为 AMD 模块。不幸的是,你在那里有一个异步操作。您可以做的最好的事情是 return 来自模块的承诺,并让依赖模块附加 then
.
// SettingsAndIdentity.js
define(['jquery'], function ($) {
// $.when resolves when all promises passed resolves
return $.when($.getJSON("models/settings.json"), $.getJSON("models/identity.json"))
});
// foo.js
define(['SettingsAndIdentity'], function(SettingsAndIdentity){
// Since SettingsAndIdentity is a promise, we just attach then
SettingsAndIdentity.then(function(settings, identity){
// start doing things here
});
});