-1

我已经搜索了两天,还没有找到答案。我需要在我的 JavaScript 游戏启动时加载几个 JSON 数据文件。在游戏开始并初始化之前,游戏无法运行,用户也不能做任何其他事情(基于此数据),因此不需要异步(允许用户看到页面上的空白元素会降低用户体验) . 我一次又一次地读到,使用 jQuery.ajax 请求的“async: false”设置是非常不受欢迎的。在 JavaScript 中加载初始数据文件的适当方法是什么?我所说的例子:Facebook 上几乎所有的游戏都有一个带有装备的“正在加载”屏幕,或者像 TribeZ 这样的游戏有一个“请稍候......正在提取资源”消息。

4

3 回答 3

2

你刚刚回答了你自己的问题。发布Loading - please wait消息,获取您的数据,然后隐藏消息。设置 UI 的其余部分以使用合理的默认值,直到加载数据(或完全隐藏它们)。

于 2013-08-01T19:49:18.060 回答
1

你不想这样做。同步 XHR 是一罐蠕虫;与它相关的错误不断出现,并且随着实施者想要摆脱它,对它的支持只会变得更糟。Sync XHR 会阻止该选项卡中发生的所有事情(使用变换的 CSS 动画除外)

我在这里吹嘘自己的号角,但我为完全相同的用例(预加载游戏资产)制作了一个 JS 预加载器库。还有一些大公司支持的CreateJS 的 PreloadJS 。

于 2013-08-01T19:55:20.037 回答
0

我认为您正在寻找的是complete活动$.ajax

这将允许您将一组函数链接在一起,但其他方法仍会在成功时异步触发,而其他方法在完成之前不会触发。


完全的

类型:Function(jqXHR jqXHR, String textStatus) 请求完成时调用的函数(在执行成功和错误回调之后)。该函数获得两个参数:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串(“成功”、“未修改”、“错误”、“超时”、“中止”或“解析器错误”)。从 jQuery 1.5 开始,完整的设置可以接受一个函数数组。每个函数都会被依次调用。

这是一个 Ajax 事件。

资源

于 2013-08-02T01:04:23.063 回答