Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何跨js模块链接承诺?_Javascript_Jquery - Fatal编程技术网

Javascript 如何跨js模块链接承诺?

Javascript 如何跨js模块链接承诺?,javascript,jquery,Javascript,Jquery,我有一个js模块,它调用另一个js模块: /* InitModule */ //sets hdnMyUIWidget value to a defined template MustacheTemplateLoader.LoadMustacheTemplates(); //calls Mustache.to_html(template, date) UIBuilder.LoadMyUIWidget(); 我想说,在调用UIBuilder.LoadMyUIWidget()时,胡子模板在隐藏字

我有一个js模块,它调用另一个js模块:

/* InitModule */

//sets hdnMyUIWidget value to a defined template
MustacheTemplateLoader.LoadMustacheTemplates();

//calls Mustache.to_html(template, date)
UIBuilder.LoadMyUIWidget();
我想说,在调用UIBuilder.LoadMyUIWidget()时,胡子模板在隐藏字段中的可用时间约为80%。但有20%的时间是不可用的

因此,我似乎需要找出如何绑定依赖项,以在保证MustacheTemplateLoader.LoadMustacheTemplates()完成的基础上开始执行UIBuilder.LoadMyUIWidget()

最糟糕的情况是,我可以创建一个计时器,以确保在退出MustacheTemplateLoader.LoadMustacheTemplates()之前所有隐藏字段都已设置好,但我猜有一种方法可以通过承诺实现这一点,但我只是不知道最好的方法

为了提供一些额外的上下文,MustacheTemplateLoader.LoadMustacheTemplates()有一个for循环,用于将一组mustache模板从数组加载到隐藏字段中。因此,如果已经定义了一个包含10个mustache模板的数组,那么在加载模板的所有10个ajax调用完成之前,控制逻辑不应该继续到UIBuilder.LoadMyUIWidget

实现这一点的最佳现代方式是什么?似乎这在标准jQuery中是可行的。似乎甚至有一种简化的方法可以实现这一点,这种方法由现代浏览器中的Javascript本机支持。我的代码需要支持IE10

更新#1

以下是MustacheTemplateLoader请求的源代码:

更新#2

我可以用jquery Deferred()函数实现我想要做的事情吗?大概是这样的:

var deferred = $.Deferred();
deferred = mtl.LoadMustacheTemplates(deferred);
deferred.resolve();

我需要确保在上次ajax模板加载触发成功事件后,从LoadMustacheTemplates()返回延迟对象。最简单的方法是什么?

您是否可以在问题中包含
MustacheTemplateLoader.LoadMustacheTemplates()
的文本?当函数中的所有任务都完成后,您可以从
MustacheTemplateLoader.LoadMustacheTemplates()
返回
Promise
,chain
.then()
函数传递调用的位置
UIBuilder.LoadMyUIWidget()
不太清楚这个问题,但我认为事件可以帮助您,看看触发器()是否模板加载完成后,将启动尝试加载UI小部件的函数。是否可以在问题中包含
MustacheTemplateLoader.LoadMustacheTemplates()
的文本?当函数中的所有任务都完成后,您可以从
MustacheTemplateLoader.LoadMustacheTemplates()
返回
Promise
,chain
.then()
函数传递调用的位置
UIBuilder.LoadMyUIWidget()
不太清楚这个问题,但我认为事件可以帮助您,看看触发器()是否模板加载完成后,启动尝试加载UI小部件的函数。