0

私はそれを理解できない奇妙な問題を抱えています。jQuery と Phonegap を使用してモバイル アプリを作成しました。私のアプリでは、データを取得するためにいくつかの Web サービスを呼び出していますが、それには数秒かかるため、ユーザーに読み込みバーを表示したいと考えています。サービスリクエストの前にJavaScriptで画面に追加する.gif画像を使用して、独自の読み込みプレゼンテーションを作成しました。私の問題は、Web サービス機能がほぼ半分または完全に完了するまで、この .gif が画面に追加されないことです。非同期で呼び出すようですが、知る限り、すべて 1 つのスレッド上にあります。では、どうすればこれを達成できますか?

(疑似コード)

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

1 に答える 1

1

これに似た問題がありましたが、後のアクションを間隔 0 の setTimeout に追加することで解決されました。

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

この手法の詳細については、この質問を参照してください。ただし、基本的にタイムアウトにより、ブラウザーは JavaScript コードの実行を続行する前に、UI の更新 (読み込み中の画像のレンダリングなど) を完了することができます。

于 2012-09-11T11:54:10.823 に答える