$location.path('new/path')
gibi bir yol değişikliğini çalıştırırsam, bu yolun altındaki kodla ne olur? Anladığım gibi, bir yol değişikliği kodun geri kalanının çalışmasını durduramıyor, ama aslında ne oluyor? Kod bitecek ve sadece o zaman yol değişecek mi? Bu kod çok zaman alıcı ise (yavaş bir ağ bağlantısında bir sunucuya bir şey kaydetme), konum değişikliği benzer şekilde geç olacak mı? Yoksa paralel olarak şeyler olur mu?
cevap
Here's a small test, kodu çalıştırmayı bitirdikten sonra konumu değiştirir gibi görünüyor. Jsfiddle'daki konsola bir göz atın, her iki döngüyü de göreceksiniz, ama birbiri ardına. @SilverlightFox'un belirttiği gibi javascript'te paralel işlem yapılmadığını belirtiyor. code in HomeCtrl
is changed bir zaman aşımı dahil etmek durumunda zaman aşımı programının akışı ve programları sonra AboutCtrl
yürütür yürütmek için zaman aşımı kırar çünkü
//this one loads first, executes the loop, then changes location.
function HomeCtrl($scope, $location) {
$location.path('/about');
var i = 0;
while(i < 1000000000) {
if(i % 100000000 === 0) {
console.log('home')
}
i++;
}
}
//this loop executes second.
function AboutCtrl($scope) {
$scope.name = 'John';
var i = 0;
while(i < 1000000000) {
if(i % 100000000 === 0) {
console.log('about')
}
i++
}
}
, konum ilk değiştirir. döngü çalışır, sonra http isteği bittikten 'hakkında' yer değişiklikleri, a proper async request ile
//changes location first, executes AboutCtrl, then does the "home" loop
function HomeCtrl($scope, $location) {
$location.path('/about');
setTimeout(function() {
var i = 0;
while(i < 1000000000) {
if(i % 100000000 === 0) {
console.log('home')
}
i++;
}
}, 1)
}
o zaman aşımı ile aynıdır. Yani, yavaş bir bağlantıda veritabanlarını güncelleştirmek için bir ajax çağrısı, uygulamanın yolları değiştirmesini durdurmaz. O niyeti olsaydı
//changes location, executes 'AboutCtrl', then finishes the http request and
//executes the 'home' loop.
function HomeCtrl($scope, $location, $http) {
$location.path('/about');
$http.get('/echo/json/').success(function() {
var i = 0;
while(i < 1000000000) {
if(i % 100000000 === 0) {
console.log('home')
}
i++;
}
});
Çünkü bir ağ çağrısı rotasını değişiyordu, ben, başarı/hata vaadi veya geri aramasında yapardı.
- 1. C'deki bir dizi dizinin kısmi başlatılması olduğunda ne olur?
- 2. .close() başarısız olduğunda Python 3'teki dosya tanıtıcılarına ne olur?
- 3. Yeni ortaya çıkarılan kod olduğunda yapı nasıl başarısız olur?
- 4. WPF liste görünümü kaydırma çubuğu en altta olduğunda ne olur?
- 5. Bir javascript yönlendirmesinden sonra (code window.location.href) kod ne olur?
- 6. Bir işlem çatallandığında ne olur?
- 7. Bu ne tür bir kod?
- 8. Uygulama kilitlendiğinde ne olur?
- 9. Bu bildirimde ne olur?
- 10. Bir Bağlamı iptal etmezsem ne olur?
- 11. System.exit bir kapatma kancasından çağrılırsa ne olur?
- 12. Bir açısal js sözü reddedilmez ve başarısız olur ne olur?
- 13. JavaScript'te, bulunmayan bir özelliği "silmek" durumunda ne olur? Ben bir değişken varsa JavaScript ne olur
- 14. Ironpython'da bir modülü içe aktarırken ne olur?
- 15. Çalışırken bir Python betiğini değiştirirsem ne olur?
- 16. Bir shared_ptr'nin yapıcısı başarısız olursa ne olur?
- 17. Başlık dosyasında bir sınıf uygularsam ne olur?
- 18. Soru() 'ın
- 19. loaderInfo.bytesTotal sıfır olduğunda ne yapmalıyım
- 20. 10 SMS gönderdiğimde bazen kod = 0 olur. Bu kod ne anlama geliyor? Benim SmsReceiver (sentIntents) olarak
- 21. Uygulama kaldırıldığında PendingIntents'a ne olur?
- 22. OnPause'dan sonra AsyncTasks'e ne olur?
- 23. Yenileme jetonu kaybedilirse ne olur?
- 24. Sprintf_s sprintf analogu nedir (newpath, "% s% s", ...)?
- 25. Mongodb hafıza dışındayken ne olur?
- 26. pthread_create pthread_create sonra ne olur?
- 27. Bekleme modunda zamanlayıcıya ne olur?
- 28. AIDL dosyaları eşleşmezse ne olur?
- 29. TFS 2010 RC: Düşük kod kapsamı için bir yapı nasıl başarısız olur?
- 30. Vernik Önbellek dolduğunda ne olur?
Herhangi bir paralel işlem olmayacaktır, çünkü JavaScript tek iş parçacıklı. Zaman uyumsuz isteklerde bulunabilirsiniz, ancak tetiklenen herhangi bir olay sıraya konur. – SilverlightFox
@SilverlightFox Evet, siz haklısınız. Şeylerin düzeni hakkında daha çok düşünüyordum. Belki de "$ location" işlevi yeterince hızlıysa, işlevlerin geri kalanı yürütülmeden önce yolu güncelleyebilir. – Jorg