Ini mungkin salah satu hal yang paling menarik yang pernah saya dapatkan sejak saya mulai bermain-main dengan JavaScript. Jika Anda pernah menulis potongan JS yang agak rumit, Anda mungkin memperhatikan bahwa peramban komputer yang lebih lambat (seperti FF2 di mac) akan membeku jika Anda menjalankan melalui lingkaran besar yang melakukan beberapa operasi berat (binding acara, manipulasi dom, dll.). Bagi saya pada pengguna ini selalu sangat menyebalkan karena hanya masuk ke alur kerja Anda dan jika Anda merasa tidak beruntung mungkin menabrak peramban Anda. Sejauh ini saya pikir satu-satunya cara untuk menghindari hal ini adalah dengan hanya menulis JavaScript yang kurang intens dan dan mengoptimalkannya daripadanya. Namun, dengan upgrade yang baru-baru ini dilakukan untuk PostTask telah berhasil, kami sering perlu untuk mengikat 300 kejadian () pada pemuatan halaman serta melakukan sejumlah besar operasi lainnya. Ini sampai pada titik di mana pemuatan sisi akan membekukan FF2 di mac selama 16 detik gila - sangat tidak dapat diterima dengan standar apa pun. Posting ini adalah tentang bagaimana sebuah trik sederhana mengurangi waktu inisialisasi turun menjadi 5 detik sambil menghindari pembekuan browser apapun pada saat yang bersamaan. Rahasia besar - Menggunakan JavaScript untuk membagi beban kerja Masalah utama yang saya identifikasi bertanggung jawab atas pembekuan browser adalah JavaScript berjalan dalam satu thread tunggal. Ini berarti saat ada beberapa kode JS yang mengeksekusi, tidak ada kode lain yang dapat berjalan bersamaan. Dari hari VB lama saya, saya ingat bahwa sebelumnya ada fungsi yang disebut doEvents () yang dapat Anda masukkan ke dalam lingkaran besar agar aplikasi Anda tidak membeku. Apa yang dilakukannya pada dasarnya adalah melihat apakah ada kode lain yang perlu dijalankan, jalankan dan kemudian kembali ke lingkaran Anda. JavaScript doesnt memiliki fungsi seperti itu, tapi sesuatu yang datang sangat dekat - timer. John baru-baru ini melakukan posting yang bagus tentang mereka yang mengkonfirmasi percobaan saya sebelumnya dengan mereka: Jika Anda menetapkan interval atau batas waktu dari katakanlah 50ms dalam JavaScript tidak ada jaminan apapun kapan kejadian akan dipecat. Satu-satunya yang dijanjikan JS adalah tidak memecat acara sebelum 50 ms selesai. Lain maka itu hanya mencoba untuk mengeksekusi acara ASAP. Itu berarti jika ada kode JS yang saat ini berjalan maka tidak ada acara yang akan menyala sampai kode blok selesai dieksekusi. Ini juga berarti bahwa beberapa acara (interval timeout klik etc. callback) dapat mengantri selama beberapa saat dan kemudian dipecat kembali. Apa yang tampak seperti masalah yang sangat menyebalkan bahwa Anda harus bekerja di sekitar jika Anda ingin melakukannya memungkinkan animasi halus, ternyata ini juga membuka serangkaian kemungkinan penulisan kode asinkron di JS. Dan dengan asynchronous, saya maksudkan kode yang tidak akan dijalankan sebagai bagian dari aliran program normal Anda, namun setiap kali browser JS yang nyaman untuk menjalankannya. Anda mungkin telah sampai pada kesimpulan yang saya buat beberapa waktu yang lalu: Ini adalah mekanisme sempurna untuk membagi sebuah operasi besar menjadi potongan-potongan kecil yang bisa diolah peramban kapan pun nyaman dan tidak akan membeku. Ini selalu bekerja paling baik jika Anda meninggalkan ruangan untuk bernafas dengan browser di antara mengeksekusi potongan kode (1-5ms biasanya sudah cukup). Berikut adalah beberapa kode yang bisa melakukannya dengan cara yang mudah digunakan:. Antrian 123 timer: null, queue: 91 93, tambahkan: fungsi 40 fn, konteks, waktu 41 123 fungsi var setTimer 40 waktu 41 123. Antrian. timer setTimeout 40 fungsi 40 41 123 waktu. antre. Tambahkan 40 41 jika 40. Antrian. Panjang 41 123 setTimer 40 waktu 41 125 125. waktu 2 41 125 jika 40 fn 41 123. Antrian. Dorong 40 91 fn, konteks, waktu 93 41 jika 40. Antrian. Panjang 1 41 123 setTimer 40 waktu 41 125 kembali 125 var berikutnya. Antrian. Shift 40 41 jika 40 next 41 123 return 0 125 next 91 0 93. call 40 next 91 1 93 window 41 return next 91 2 93 125, clear: function 40 41 123 clearTimeout 40. Antrian. timer 41 Queue. queue 91 93 125 125 Late event binding Salah satu hal yang kami gunakan untuk postTask adalah apa yang saya sebut acara akhir mengikat. Katakanlah Anda memiliki kode berikut: (Catatan: Ini bisa disederhanakan banyak, tapi cara ini lebih mudah untuk memahami bagaimana pekerjaan refactoring) 40 dokumen 41. siap 40 fungsi 40 41 123 banyak lis, katakanlah 500 40 li 41. masing-masing 40 fungsi 40 41 123 40 ini 41. mengikat 40 klik. Fungsi 40 41 123 alert 40 Ya Anda mengklik saya 41 125 41 125 41 125 41 Anda mungkin akan memperhatikan bahwa ini sudah memiliki dampak nyata pada inisialisasi halaman Anda saat membekukan browser selama itu. Untuk menghindarinya bisa semudah: 40 dokumen 41. siapkan 40 fungsi 40 41 123 banyak lis, katakanlah 500 40 li 41. masing-masing 40 fungsi 40 41 123 var diri ini. Fungsi doBind 40 41 123 40 self 41. bind 40 klik. Fungsi 40 41 123 waspada 40 Ya Anda mengklik saya 41 125 41 125. antre. Tambahkan 40 doBind, 41 125 41 125 41 Ini akan meminimalkan inisialisasi halaman Anda sampai ke kecepatan non-JS sementara juga mengikat kejadian secara tepat waktu. Intinya, alih-alih mengikat acara secara langsung dengan dokumen yang sudah siap, Anda cukup merangkum masing-masing mengikat ke dalam penutupannya sendiri sehingga Anda menambahkan ke antrian untuk eksekusi nanti. Ini berarti bahwa pengguna akan melihat halaman dengan sangat cepat sementara di latar belakang setiap 2ms elemen li baru mendapatkan pengikatannya dilakukan. Tentu saja pengguna sekarang bisa melakukan sesuatu yang benar-benar menjengkelkan dan klik pada elemen sebelum selesai mengikat yang mungkin bisa mengacaukan semuanya. Namun, ini sangat tidak mungkin. Yang pertama, pengguna harus sangat cepat, karena neraka perlu klik di Rapi. Saya telah menggunakan ExtJS untuk mengembangkan webapp dan havent saya mengalami masalah ini (belum) atau bahkan mempertimbangkan apakah ada DoEvents seperti panggilan untuk js. Saya heran jika strategi ini bisa dengan mudah diimplementasikan di ExtJS. Ketika saya membutuhkannya, saya akan mengetuk) Karena Anda masih terjebak dalam hari seperti saya, untuk loop intensif di VB, hubungi DoEvents dan panggilan API tidur (nol ms sudah cukup) untuk benar-benar menghasilkan pemrosesan. Jika tidak, CPU akan tetap dipatok selama loop. Artikel bagus Felix Im menyelipkan ini untuk suatu hari hujan pasti. Im dengan Atanas mengenai penanganan event yang mengikat induknya daripada anak individu, tapi tentu saja semua event binding isnt selalu ini clean cut. Jika baris 6 dalam kode pertama Anda berbunyi:.queue. timer setTimeout (function () Saya percaya logikanya sedikit rumit dan bisa menggunakan beberapa komentar. Javascript itu seperti lelucon, memberi banyak kesalahan, semuanya berbasis Pada kompatibilitas browser Mengapa pengembang perangkat lunak berhenti mengalahkan themselfs dan mengembangkan browser umum Peter: Saya memperbaikinya, terima kasih untuk bercak itu. Maaf soal kode ini, ini dimaksudkan sebagai PoC dan saya ingin membuat beberapa perubahan di dalamnya sebelum memadamkannya. Versi rilis Forex: Tidak, mencoba untuk meningkatkan PR Anda dengan link no-follow adalah lelucon). Anda harus memikirkan sebuah saklar karir - baik JS maupun spam tampaknya menjadi sesuatu yang Anda sukai. Keahlian in-house Anda diperpanjang dan beragam sesuai permintaan. Proyek co-source bersama kami - membuat usaha Anda yang paling ambisius memungkinkan Layanan pengembangan aplikasi Membangun aplikasi inovatif dari nol, mengintegrasikan aset perangkat lunak atau mempertahankan penyebaran langsung ke tujuan apa pun, Anda dapat membantu mencapainya Aplikasi modernisasi amp migrasi Merenovasi monolitik , Aplikasi warisan terputus dan memanfaatkan teknologi terbaru. Berinvestasi untuk masa depan bisnis Anda hari ini QA amp Pengujian Perangkat Lunak QA adalah landasan keberhasilan sebuah proyek. Kami membuat proses pengujian yang canggih dan terdepan untuk memberikan kualitas yang melebihi harapan pelanggan. Diperlukan untuk mendownload data stok historis Butuh jumlah besar yaitu: sejak 1962 Nah tidak terlihat lagi, saya mengerti Anda Bagaimana Mengunduh Informasi Stok Bersejarah dari Yahoo Yahoo memiliki API rahasia yang mereka gunakan di sana memiliki halaman yang memungkinkan Anda menampilkan data stok historis. API berbasis REST dan sangat mudah digunakan. Anda perlu menentukan setiap ticker saham yang Anda cari dan tanggal mulai yang Anda inginkan dari sejarah. (Tanggal yang paling tua nampaknya sekitar tahun 1962.) C Historical Stock Downloading Code Untuk menggunakan Yahoo API yang tidak terdokumentasi untuk mendownload data stok historis Anda perlu mendefinisikan saham seperti: Kode untuk benar-benar mendownload dan mengurai hasil dari saham historis Data, Anda memerlukan sesuatu yang mirip dengan kode C di bawah ini: Contoh penggunaan C Historical Stock Downloader Buat aplikasi konsol C sederhana lalu tambahkan kode ini:
PERINGATAN . Argumen tidak valid diberikan untuk foreach () di homesharebazpublichtmltemplatesshootwrapkatchielibresponsive. php on line 111 Notice. Variabel yang tidak ditentukan: besar di homesharebazpublichtmltemplatesshootwrapkatchielibresponsive. php on line 146 Pemberitahuan. Variabel yang tidak ditentukan: medium di homesharebazpublichtmltemplatesshootwrapkatchielibresponsive. php on line 147 Perhatikan. Variabel yang tidak ditentukan: kecil di homesharebazpublichtmltemplatesshootwrapkatchielibresponsive. php on line 148 Pemberitahuan. Variabel yang tidak terdefinisikan: xsmall in homesharebazpublichtmltemplatesshootwrapkatchielibresponsive. php on line 150 Corporate News Standard Chartered menunjuk Capital Capital NMB sebagai manajer isu untuk FPO 17 Januari 2017 - Standard Chartered Bank Nepal telah menunjuk NMB Capital Limited sebagai manajer isu untuk penawaran umum terbuka (FPO). NRB menaikkan suku bunga kredit mikro sebesar 18 persen KATHMANDU, 12 Januari: Lembaga keuangan...
Comments
Post a Comment