0

とにかくこれを行うことはありますか?最後のチェックポイントからアプリケーションを「再開」できる JavaScript アプリケーションを作成したい

//code.js
var abc = 13;
checkpoint("myLocalStorage");
alert(abc);

チェックポイント関数は、実行に関するすべての情報を保存し、将来、実行をそのままの状態で再開できるようにします。

//resume.js
resume("myLocalStorage");

これは、長いスクリプトや巨大なループを含むスクリプトを実行する場合に非常に役立ちます。画像をプリロードしたり、面白いアニメーションを実行したりする小さなスクリプトを実行することについて話しているのではありません。これは、実行に時間がかかり、膨大な計算能力を必要とする実数計算ツールとして JavaScript を使用することについて話しているのです。これらのコンテキストでは、実行チェックポイントがいかに便利であるかがわかります!

JavaScriptにはまだそのようなものは存在しないと思いますが、誰かがそれに少しでも似ているものに近づいた場合、私はまだ非常に感謝しています.

4

3 に答える 3

1

Javascript で「サスペンドできる」ものを作成するには、通常のプログラムとは少し異なる方法で作成する必要があります。

ステップ 1より適切な言葉がないため、1 回のパス
で どれだけの問題を実行できるかを決定します。

ステップ 2
状態をある種のオブジェクトに保存します。中間値はありません。次のパスを作成するために必要なものだけです

ステップ 3
関数 で実行できるようにコードを記述しwindow.setTimeout()ます。これにより、ページをリロードするよりもテストがはるかに簡単になります。

この場合、名前全体を 1 ステップずつ小文字に変換するプログラムがあります。保存する必要がある唯一のデータは、自分の名前と、現在の計算に沿った場所のインデックスです。

例 1: 用途setTimeout()

<html>
  <head>
    <title>Test Thingy</title>
  </head>
  <body>
  <script>
    var data = {
      name: ["Jeremy", "J", "Starcher"],
      idx: 0
    }

    function doPass() {
      // If at the end of the list
      if (data.idx >= data.name.length) {
        alert("All iterations done:" + data.name.join(" "));
        return;
      }

      // Do our calculation here
      var s = data.name[data.idx];
      s = s.toLowerCase();
      data.name[data.idx] = s;
      data.idx++;
      window.setTimeout(doPass);
    }
    doPass();
  </script>

  </body>
</html>

例 2: localStorage を使用します。「リロード」を 4 回押してテストします

<html>
  <head>
    <title>Test Thingy</title>
  </head>
  <body>
  <script>      
    var data;
    data = localStorage.getItem("data");    
    if (data) {
      data = JSON.parse(data);
    } else {
      data = {
        name: ["Jeremy", "J", "Starcher"],
        idx: 0
      }
    }

    function doPass() {
      // If at the end of the list
      if (data.idx >= data.name.length) {
        alert("All iterations done:" + data.name.join(" "));
        return;
      }

      // Do our calculation here
      var s = data.name[data.idx];
      alert(s);
      s = s.toLowerCase();
      data.name[data.idx] = s;
      data.idx++;
      localStorage.setItem("data", JSON.stringify(data));
    }

    doPass();
  </script>

  </body>
</html>
于 2012-10-03T04:47:47.977 に答える
0

最新のブラウザはyield. 調べることができます。

https://developer.mozilla.org/en-US/docs/JavaScript/New_in_JavaScript/1.7

于 2012-10-03T03:12:39.163 に答える
0

Javascript は、「実行に時間がかかり、巨大な計算能力を必要とする [storage on] 実数処理ツール」向けには設計されていません。ここにあなたが得る最高のものがあります: http://www.w3schools.com/html/html5_webstorage.asp

于 2012-10-03T03:12:31.790 に答える