de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
Samantha  J T Star
Samantha J T Star
Question

Apa keuntungan yang ada dalam menggunakan $timeout di AngularJS sebagai pengganti jendela.setTimeout?

Saya punya saran untuk menerapkan batas waktu seperti ini:

  $timeout(function() {

    // Loadind done here - Show message for 3 more seconds.
    $timeout(function() {
      $scope.showMessage = false;
    }, 3000);

  }, 2000);
};

Dapatkah seseorang mengatakan padaku apa alasannya / keuntungan dalam menggunakan ini daripada menggunakan setTimeout?

50 2013-10-26T17:37:05+00:00 3
 georgeawg
georgeawg
Pertanyaan edit 2 Agustus 2018 в 10:22
Pemrograman
angularjs
settimeout
Solution / Answer
Maxim Shoustin
Maxim Shoustin
26 Oktober 2013 в 5:41
2013-10-26T17:41:29+00:00
Lebih
Sumber
Sunting
#22629929

Dalam kata dasar $timeout mengacu pada angularjs ketika setTimeout - untuk JavaScript.

Jika anda masih berpikir untuk menggunakan setTimeout oleh karena itu anda perlu memanggil $scope.$berlaku() setelah

Sebagai catatan

Saya sarankan anda untuk membaca Bagaimana cara "berpikir di AngularJS" jika saya memiliki jQuery latar belakang? post

dan AngularJS: menggunakan $timeout, tidak setTimeout

Contoh 1: $timeout

   $scope.timeInMs = 0;

    var countUp = function() {
        $scope.timeInMs+= 500;
        $timeout(countUp, 500);
    }    
    $timeout(countUp, 500); 

Contoh 2: setTimeout (logika yang sama)

 $scope.timeInMs_old = 0;

    var countUp_old = function() {
        $scope.timeInMs_old+= 500;        
        setTimeout(function () {
        $scope.$apply(countUp_old);
    }, 500);
    }

    setTimeout(function () {
        $scope.$apply(countUp_old);
    }, 500);

Demo Biola


$timeout juga kembali janji

JS

function promiseCtrl($scope, $timeout) { 
 $scope.result = $timeout(function({ 
 return "Ready!"; 
 }, 1000); 
}

HTML

<div ng-controller="promiseCtrl"> 
 {{result || "Preparing…"}}
</div> 

$timeout juga memicu mencerna siklus

Anggap kita memiliki beberapa 3d partai kode (tidak AngularJS) seperti Cloudinary plugin yang upload beberapa file dan mengembalikan kita 'kemajuan' persentase tingkat callback.

     // .....
     .on("cloudinaryprogress",
           function (e, data) {
               var name = data.files[0].name;
               var file_ = $scope.file || {};
               file_.progress = Math.round((data.loaded * 100.0) / data.total);

                $timeout(function(){
                     $scope.file = file_;
                }, 0);         
            })

Kami ingin memperbarui UI alias $scope.file = file_;

Jadi kosong $timeout melakukan pekerjaan untuk kami, itu akan memicu siklus mencerna dan $scope.file diperbarui oleh pihak 3d akan kembali diberikan dalam GUI

 Community
Community
Jawaban edit 23 Mei 2017 в 12:09
64
0
 ksimons
ksimons
26 Oktober 2013 в 5:41
2013-10-26T17:41:42+00:00
Lebih
Sumber
Sunting
#22629930
  1. Itu membungkus anda callback untuk anda secara otomatis di blok coba/tangkap dan let's anda menangani kesalahan dalam $exceptionHandler layanan: http://docs.angularjs.org/api/ng.$exceptionHandler
  2. Kembali janji dan dengan demikian cenderung untuk beroperasi baik dengan janji-berdasarkan kode dari tradisional callback pendekatan. Ketika anda balik kembali, nilai yang dikembalikan adalah digunakan untuk diselesaikan janji.
20
0
 georgeawg
georgeawg
2 Agustus 2018 в 10:26
2018-08-02T22:26:53+00:00
Lebih
Sumber
Sunting
#22629931

AngularJS memodifikasi JavaScript normal aliran dengan menyediakan sendiri kegiatan pengolahan loop. Ini membagi JavaScript menjadi klasik dan AngularJS konteks eksekusi. Hanya operasi yang diterapkan di AngularJS konteks eksekusi akan mendapatkan keuntungan dari AngularJS data-binding, penanganan eksepsi, properti, menonton, dll.

Dengan menggunakan AngularJS $timeout layanan, dibungkus setTimeout akan dieksekusi di AngularJS konteks eksekusi.

Untuk informasi lebih lanjut, lihat

  • AngularJS $timeout Layanan Referensi API
  • AngularJS Panduan Pengembang - Integrasi dengan browser event loop
1
0
Related communities 1
Angular Indonesia
Angular Indonesia
3 519 pengguna
Framework web development aplikasi web dan mobile https://angular.io/ Facebook Group https://www.facebook.com/groups/462764390497214/ Github Repo Angular ID https://github.com/angular-indonesia Medium Angular Indonesia https://medium.com/angularid
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
Asilbek Qadamboyev
Terdaftar 1 hari yang lalu
2
Akshit Mehta
Terdaftar 4 hari yang lalu
3
me you
Terdaftar 1 minggu yang lalu
4
Никита иванов
Terdaftar 1 minggu yang lalu
5
Alex1976G_06
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi