0

我有奇怪的问题,我无法弄清楚。我用 jQuery 和 Phonegap 制作了移动应用程序。在我的应用程序中,我正在调用一些网络服务来获取数据,当我这样做时需要几秒钟,所以我想向用户显示一个加载栏。我已经用 .gif 图片编写了自己的加载演示文稿,我在服务请求之前使用 javascript 添加到屏幕上。我的问题是,直到网络服务功能几乎一半或完全通过时,这个 .gif 才会添加到屏幕上。就像我会异步调用它一样,但据了解它都在一个线程上。那么我怎么能做到这一点呢?

(伪代码)

showLoading();
callWebService();
stopLoading();
4

1 回答 1

1

我遇到过与此类似的问题,已通过将后面的操作添加到间隔为 0 的 setTimeout 中来解决:

showLoading();
setTimeout(function(){
    callWebService();
    stopLoading();
}, 0);

有关此技术的更多详细信息可以在这个问题中找到,但基本上超时允许浏览器在继续执行 JavaScript 代码之前完成任何 UI 更新(例如渲染加载图像)。

于 2012-09-11T11:54:10.823 回答