我可以定义一个AMD模块,它的依赖是动态AJAX调用的结果吗?
例如:
define([ 'jquery', 'config' ], function ($, config) {
$.get(config.API + 'getSomething', { key: config.KEY }).done(function (res) {
// I want res to be what this module returns
});
});
我可以这样做:
define([ 'jquery', 'config' ], function ($, config) {
return $.get(config.API + 'getSomething', { key: config.KEY });
});
但是当我需要这个模块时,我必须附上一个done
,我宁愿不这样做:
define([ 'something-module' ], function (something) {
something.done(function (res) {
// All my codes here
});
});
如果我在考虑加载模块之前等待API调用的结果然后返回该调用的结果,那就更清洁了,但我不知道是否可能。
答案 0 :(得分:0)
AMD模块的结果可以是任何类型的对象
基于Jquery AJAX documentation,您可以将异步参数设置为false并阻止进程完成请求
请注意,同步请求可能会暂时锁定浏览器,并在请求处于活动状态时禁用任何操作
我建议您返回Promises作为模块的结果,以后可以实现或拒绝,并避免阻止浏览器。