gpt4 book ai didi

javascript - RequireJS, $.Deferred 怎么办?

转载 作者:行者123 更新时间:2023-12-03 10:17:13 24 4
gpt4 key购买 nike

下面是代码

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();
});

我想创建一个模块,谁可以“知道”我的设置和身份。Return 将在 Deferred 对象解析之前执行,并且模块 App.js 具有空的 Settings 和 Identity 对象。

我怎样才能做到这一点?

最佳答案

据我所知,您希望模块获取您的设置和身份数据并将其作为 AMD 模块返回。不幸的是,你有一个异步操作。您能做的最好的事情就是从模块返回一个 promise ,并让依赖的模块附加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
});
});

关于javascript - RequireJS, $.Deferred 怎么办?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29808394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com