问题标签 [framejs]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1895 浏览

javascript - Typescript - 使用 Frame.js 的同步 ajax 调用(解决方案:JQueryDeferred)

这个问题与打字稿并不完全相关,但如果没有上下文,就不清楚为什么我什至需要这种行为。应该相对直接地了解您是否了解 Typescript。

我在 Typescript 中有一个对话框类实现,看起来像这样(仅显示相关的方法和字段):

我正在返回this,以便可以按如下方式链接对 Show() 的调用AjaxLoadContent()HtmlLoadContent()

我发现这种链接语法非常干净且合乎逻辑,因此我想坚持使用它,但是,在 ajax 场景中,Show()在 ajax 完成之前被调用,load()因此对话框打开,然后在内容出现之前会有延迟。我无法提供回调,load()因为我想显式链接Show()到调用而不是在内部调用它......因此,我需要某种同步机制。

我现在正在研究 Frame.js 来完成这种“同步”风格,而不用像$.ajaxSetup({async: false;}). 这是我希望能起作用的答案:https ://stackoverflow.com/a/10365952

但是,以下代码仍然存在延迟:

然而,这似乎不起作用,因为尽管我已经定义了明确的控制流,但断点 2 首先被击中。Show()调用之后立即发生(因此return this加载一个空白对话框),然后最终that.jQueryDialog.html(response)从第二个 Frame 调用,在对话框已经显示后加载内容(因此仍然存在延迟)。

我怎样才能完成这种同步行为?