SORU
2 EYLÜL 2014, Salı


Mağazalar, ya da eylemler (veya her ikisi) akı harici hizmetler dokunmak gerekir?

Mağazalar kendi durumunu korumak ve bu durumda eylemler sadece aptal mesajı geçenler, bunu yaparken ağ ve veri depolama hizmetleri..., arama yeteneğine sahip olmalıdır

-VEYA-

...mağazalar, eylemler, değişmez veri salak alıcılar (ve eylemleri dış kaynakları arasında veri göndermek/getirmek olanlar olmalıdır? Bu durumda Store-model olarak hareket eder ve toplama / veri hareketi ile karınlarını doyurdular değişmez veri üzerinde kendi devlet Bankası ayarlamadan önce filtre mümkün olacaktır.

Biri ya da diğeri (yerine her ikisinin bir karışımı) olmalıdır gibi geliyor bana. Eğer öyleyse, neden bir tercih / diğer önerilir?

CEVAP
3 EYLÜL 2014, ÇARŞAMBA


Gördüm akı desen uygulanan her iki yönde, ve sonra bitmiş hem kendimi (başlangıçta giderek, eski yaklaşım), inanıyorum ki bu mağazaların olmalı aptal alıcı verilerden hareket, ve o zaman uyumsuz işleme yazıyor gerektiğini canlı eylem yaratıcıları. (*. *4) Benim durumumda, bu birkaç yararları, önem sırasına göre:

  1. Depolar tamamen senkronize hale geliyor.Bu mağaza senin mantığını takip etmek çok daha kolay ve çok kolay test—sadece verilen devlet ile bir mağaza oluşturmak için yapar, bir eylem gönderin, ve beklendiği gibi devlet değişti olmadığını görmek için kontrol edin. Ayrıca, akı temel kavramları bir basamaklı gönderir önlemek için ve birden fazla gönderir anda önlemektir; bu çok zor mağazalar uyumsuz işlem yapmak demek.

  2. Tüm eylem yaratıcıları başına gönderir.Eğer seni ele zaman uyumsuz işlemler içinde saklar ve istediğiniz tutmaya mağazaları' eylem işleyicileri senkron (ve gerekir almak için akı tek merkezden garanti), depolar etmek gerekir yangın ek BAŞARI ve BAŞARISIZ eylemlere tepki için zaman uyumsuz bir işlem. Koyarak bu gönderir eylem yaratıcıları yardımcı işleri yerine ayrı eylem yaratıcıları ve depolar; ayrıca, gerek yok git kazma ile mağaza mantığı anlamaya yerde eylemler olarak gönderilir. Bu durumda tipik asenkron bir eylem böyle bir şey (dispatch çağrıları kullanıyorsun akı lezzet dayalı sözdizimi değiştir) görünebilir:

    someActionCreator: function(userId) {
      // Dispatch an action now so that stores that want
      // to optimistically update their state can do so.
      dispatch("SOME_ACTION", {userId: userId});
    
      // This example uses promises, but you can use Node-style
      // callbacks or whatever you want for error handling.
      SomeDataAccessLayer.doSomething(userId)
      .then(function(newData) {
        // Stores that optimistically updated may not do anything
        // with a "SUCCESS" action, but you might e.g. stop showing
        // a loading indicator, etc.
        dispatch("SOME_ACTION_SUCCESS", {userId: userId, newData: newData});
      }, function(error) {
        // Stores can roll back by watching for the error case.
        dispatch("SOME_ACTION_FAIL", {userId: userId, error: error});
      });
    }
    

    Aksi takdirde çeşitli eylemler boyunca yinelenmiş mantığı ayrı bir modül içine ayıkladı; bu örnekte, bu modül gerçek Ajax isteği yaparken kolları SomeDataAccessLayer, olacaktır.

  3. Daha az aksiyon yaratıcıları gerekir.Bu büyük bir anlaşma daha az, ama olması güzel. Mağazalar eşzamanlı eylem gönderme işleme (ve olması gerektiği) #2, belirtildiği gibi, ekstra eylemleri olmayan işlemlerin sonuçlarını işlemek için ateş gerekir. Eylem gönderir yapıyor yaratıcıları tek bir eylem oluşturan asenkron veri erişimi kendisi sonucu ele alarak her üç eylem tipi gönderme anlamına gelir.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Barnacules Nerdgasm

    Barnacules N

    20 Temmuz 2006
  • Chriselle Lim

    Chriselle Li

    26 Ocak 2008
  • Jejoab

    Jejoab

    4 NİSAN 2008