SORU
23 Mart 2011, ÇARŞAMBA


Ayrı bir Javascript dosyası olmadan işçilerin Web?

Söyleyebileceğim kadarıyla, web çalışanlar ayrı bir JavaScript dosyasında yazılı olması gerekir, ve bu gibi:

new Worker('longrunning.js')

Kapatma derleyici ve tüm JavaScript kaynak kodu birleştirmek minify için kullanıyorum ve oldukça da dağıtım için ayrı dosyalarda benim işçi olması lazım. Bir şekilde bunu yapmak için var mı?

new Worker(function() {
    //Long-running work here
});

Birinci sınıf fonksiyonları JavaScript için çok önemli o yüzden arka plan işi yapmak için standart yol bambaşka bir JavaScript sunucudan dosya? yük var mı

CEVAP
23 HAZİRAN 2011, PERŞEMBE


http://www.html5rocks.com/en/tutorials/workers/basics/#toc-inlineworkers

Ne olursa anında çalışan komut dosyası oluşturmak istiyorsanız, ya da ayrı bir işçinin dosyaları oluşturmak zorunda kalmadan, kendi kendine yeten bir sayfa oluşturmak? Blob (), "aynı HTML içinde çalışan bir URL bir dize olarak çalışan koda kolu oluşturarak ana mantık olarak dosya . içi edebilirsiniz

BLOB tam örnek satır içi işçi:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8" />
</head>
<body>

  <div id="log"></div>

  <script id="worker1" type="javascript/worker">
    // This script won't be parsed by JS engines because its type is javascript/worker.
    self.onmessage = function(e) {
      self.postMessage('msg from worker');
    };
    // Rest of your worker code goes here.
  </script>

  <script>
    function log(msg) {
      // Use a fragment: browser will only render/reflow once.
      var fragment = document.createDocumentFragment();
      fragment.appendChild(document.createTextNode(msg));
      fragment.appendChild(document.createElement('br'));

      document.querySelector("#log").appendChild(fragment);
    }

    var blob = new Blob([
      document.querySelector('#worker1').textContent
    ], { type: "text/javascript" })

    // Note: window.webkitURL.createObjectURL() in Chrome 10 .
    var worker = new Worker(window.URL.createObjectURL(blob));
    worker.onmessage = function(e) {
      log("Received: "   e.data);
    }
    worker.postMessage("hello"); // Start the worker.
  </script>
</body>
</html>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Alfredo Garcia

    Alfredo Garc

    25 Mayıs 2007
  • HouseholdHacker

    HouseholdHac

    6 Kasım 2007
  • Thehalopianoplayer

    Thehalopiano

    4 ŞUBAT 2011