Ben, sert gerçekleri yok ama sen görüş sordu beri ... Chrome'da bir anlatıyor sorunu bulunmaktadır :)
: Çok fazla Web İşçileri sessiz çökmesine neden olabilir (kapaklar ~ 60-100 this bug report'a göre). Genel sorun, Web Çalışanlar kaynak yoğun, en azından v8 ile.
bir Web Worker içinde senkron HTTP çağrıları yapıyoruz eğer birden fazla HTTP arama yapmak sonuna kadar gidiyoruz varsayarsak: Bir anlamda
- , zaman uyumsuz Web için asenkron HTTP çağrıları ticaret konum İşçiler, sadece başka bir ara ürünü karıştıracaklar ve hala işleri asenkron olarak yönetmelisiniz.
- Daha basit ve daha verimli bir rotaya giderseniz ve yalnızca bir Web Çalışanı kullanırsanız, size yanıt vermesini beklemek için çok fazla zaman harcarsınız.
- Diğer yandan, birden fazla Web Çalışanı kullanıyorsanız, hangisinin meşgul olduğunu, hangilerinin meşgul olduğunu vb. Izlemeniz gerekecek. Bu durumda, yerine evde yetiştirilen bir zamanlayıcı oluşturuyor olacaksınız. tarayıcıya ne pişirdiğini kullanarak.
- Son olarak, Web Çalışanlar pahalı (görünüşte) ve bir Web çağrısı yapmak için bir HTTP çağrısının bitmesini beklemek için birden fazla Web Çalışanı oluşturmanıza neden olabilirsiniz.
Kendimi konuyla ilgili bir uzman olarak görmüyorum, bu yüzden lütfen bunun değerini düşünün. Güncelleştirme: Çeşitli senaryolar için bazı artıları/eksileri ekleme.
Bazı artıları senkron ve asenkron HTTP arama yapmak arasında seçerken bir Web Worker kullanırken akla gelen/aleyhte: Genellikle
- , senkron istekleri yazmak daha kolay olacak ve kolay olmasını kod neden olacaktır takip etmek. Eşzamanlı isteklerin bir dezavantajı, ayrı, daha küçük işlevlere oyulması gereken uzun işlevlerin yazılmasını teşvik edebilir.
- Tek bir arama yapıyorsanız, iki yöntem arasında bitirmek için gereken süre arasında fark yoktur ve senkronizasyon daha iyidir, çünkü daha basittir. Ben sadece biraz daha basit diyorum, çünkü tek bir geri çağırma dinleyicisi ile tek bir asynch çağrısı gerçekten oldukça basit.
- Belirli bir sırada, kullanıcının profil verilerini yüklemek ve ardından adreslerine göre yerel hava durumunu almak gibi birden fazla çağrı yapıyorsanız, eşzamanlı aramalar daha kolay olacaktır çünkü yazının daha kolay olması ve okumak çok daha kolay.Okumayla ilgili temel şey, çağrılardaki ardışık bağımlılıkların, çağrıların senkronize olarak yapılması ve işlev sırasındaki sırayla açıkça belirtilmesidir. Orada ne kadar fazla arama olursa, bu daha önemli olacak. Birçok çağrı varsa, karmaşıklıktaki farkın büyük olması muhtemeldir.
- Belirli bir sırada gerçekleşmesi gerekmeyen birden fazla çağrı yapmanız gerekiyorsa, zaman uyumsuz istekleri daha iyidir, çünkü genel işlem büyük olasılıkla eşzamanlı isteklerden daha büyük boyuttaki siparişler olabilir. Yaptığınız daha fazla çağrı ya da daha yavaş bağlantı, toplam geçen süredeki fark daha belirgin olacaktır; Bu fark çok hızlı büyüyecek (üstel olarak mı?). Kodu okuyan birinin bakış açısıyla, bu durumda senkronize istekleri kullanmam gerektiğini düşünüyorum, bu durumda yanıltıcı olurdu çünkü yanıltıcı olmadıkça çağrılara sıralı bir nitelik var. Birbirine bağımlı olmayan bir dizi asenkron istekleri yazma perspektifinden çok kötü olmamalı çünkü sadece bir sayaç ayarlıyorsunuz, tüm çağrıları yapıyorsunuz, geri aramaların her birinde sayaçları artırıyorsunuz ve bitirdiniz Sayaç yaptığınız aramaların sayısına eşit olduğunda.
Bu mümkün ... ve gereksinimlerinize bağlıdır, ancak AJAX asenkronize olmadan AJAX olmayacaktır !!! – geekman
SJAX'ı (eşzamanlı javascript ve XML) öneremem ancak bazı gerçekleri de görmek istiyorum ve endişelerim çok iş parçacıklı ortamdaki davranışları yansıtmıyor. –
Teşekkürler beyler. AJAX'taki A'nın anlamını biliyorum :) ama web çalışanlarını kullanırken birçok insanın böyle bir şey yaptığını gördüm. – Gecko