Umarım bu açıklamada yardımcı olabilirim.
return Promise.resolve(action)
.then(function (action) { store.dispatch(action)})
Bu bölümü görmek:
aşina ne bakalım
"eylem" özelliği geçirilecek bekleyen sadece bir fonksiyondur
function (action) { store.dispatch(action)}
.
return Promise.resolve(action)
.then(store.dispatch) // <--- this part
"gönderme" sadece bir işlev olduğunu ve bu durumda, bir argüman, bekliyor: Biz etrafında beyin sarma sorun yaşıyorsanız şeye baktığımızda
Şimdi, bu. Büyük olasılıkla, bir nesne - şöyle: Gerçekten ihtiyacımız yok,
.then((action) => {
store.dispatch(action)
})
ama: şimdi
store.dispatch({ type: 'MY_ACTION_TYPE' })}
, bunu gibi bir kapatma sarın "olabilir", ve tanıdık gelecektir anonim bir işlevle "sarmak" için? Gerçekten değil, bu yüzden biz sadece koyabilirsiniz: store.dispatch, ve sözün geri dönüşünden argümanı geçecek "beklemek" işlevidir. Bu gibi düşünmeye:
biz fonksiyonunu incelemek "MultipleByTwo" zaman - tanıdık imza bildiğine göre sahiptir hakkında: (x) => x * 2
biz ise
Promise.resolve(5).then((x) => x * 2)
Not: sadece kendi aynı şey, fonksiyon adını kaldırmak Sen çözmek (5) görüyoruz -> bir zincir, ya da bir "atlatma" gibi resolve.then düşünüyorum. "(5) 'i çözdüğümüzde" 5 "değerini" .then "' e geçiriyoruz. Şimdi hatırlayın, 5 değer bir şey olabilir ... bir ilkel, bu durumda 5, bir nesne {TYPE: "WHATEVER"}, bir fonksiyon vs. .. sadece ellerim .. gibi, "Hey" .then ', İşte benim değer (myFunction '.. onlar TÜM bekliyoruz geçer argüman üzerinde veya bizim multiplyByTwo, hatta o store.dispatch örneği bu örnek "
resolve(5).then(myfunction)
| ^
|__>__>__>__>__>_|
o anlamak önemlidir' .... olduğunu s).
multiplyByTwo(x) <-- expecting one argument
veya fonksiyon işlev imza dahilinde beyan olmayabilir AMA olacak vücut ala iç ..
myFunction() {
const args = Array.from(arguments) // we grab the arguments
}
veya bağımsız değişkenler
myOtherFunction(...args)
Ama evet herhangi bir sayı için umut - bu fonksiyonlar hareket etmeye çözünürlük bazı giriş bekliyoruz. Eğer iade değeri hakkında umurumda değil, eğer varsa, sadece bazı akış kontrol sahip olmak istiyorum ... Bunu yapmak, "BU SONRA" ..
Umarız bu yardımcı oldu ve umarım soruyu cevapladım. Değilse, haberim olsun.
Teşekkür ederim, çalışmanın kapanmasını gerektirmediğini görebiliyorum. ama bu ne işe yarıyor? Belirli bir argümanın parametre olarak beyan edilmeden iletildiğini söyleyen javascript kuralı nedir? Bu, şu şeylerin mi? Sihirli olarak çağrılan nesnenin çözümlenmiş değerini alır ve onu geri çağırır mı? – stackjlei
Evet, ".then" in nasıl çalıştığını açıklayan cevabımı güncellememe izin verin. –