Rumah > hujung hadapan web > tutorial js > Bagaimana untuk mengendalikan berbilang janji dalam AngularJS_AngularJS

Bagaimana untuk mengendalikan berbilang janji dalam AngularJS_AngularJS

WBOY
Lepaskan: 2016-05-16 15:16:35
asal
989 orang telah melayarinya

Apabila menggunakan AngularJS untuk mengendalikan janji, kadangkala anda akan menghadapi situasi di mana anda perlu mengendalikan berbilang janji.

Penyelesaian yang paling mudah adalah untuk mendapatkan setiap janji. Seperti berikut:

var app = angular.module("app",[]);
app.controller("AppCtrl", function($q. $timeout){
var one = $q.defer();
var two = $q.defer();
var three = $q.defer();
$timeout(function(){
one.resolve("one done");
}, Math.random() * 1000)
$timeout(function(){
two.resolve("two done");
}, Math.random() * 1000) 
$timeout(function(){
three.resolve("three done");
}, Math.random() * 1000) 
functioin success(data){
console.log(data);
}
one.promise.then(success);
two.promise.then(success);
three.promise.then(success);
})
Salin selepas log masuk

Adakah cara yang lebih baik?

Kaedah $q.all boleh menerima pelbagai janji dan dipanggil seperti berikut:

var all = $q.all([one.promise, two.promise, three.promise]);
all.then(success);
Salin selepas log masuk

Apa itu janji?

Promise ialah kaedah memproses nilai secara tidak segerak, yang mewakili nilai pulangan terakhir atau pengecualian yang dilemparkan oleh fungsi Apabila berurusan dengan objek jauh, kita boleh menganggapnya sebagai objek jauh. seorang ejen. Jika promise juga merupakan sejenis kaedah pemprosesan tak segerak, maka kita akan memikirkan perbezaannya daripada XHR dan $.ajax?

Adalah kebiasaan untuk js menggunakan penutupan atau panggil balik untuk membalas data yang dikembalikan secara tidak segerak, seperti permintaan XHR selepas halaman dimuatkan. Kita boleh berinteraksi dengan data secara normal seolah-olah ia telah dikembalikan tanpa bergantung pada pencetus fungsi panggil balik.

Jadi apakah masalah yang dicadangkan oleh ng bertujuan untuk menyelesaikannya? Panggilan balik telah digunakan untuk masa yang lama, dan biasanya nyahpepijat menjadi sangat sukar jika terdapat panggilan balik yang bergantung pada panggilan balik lain dan ralat perlu dipaparkan selepas setiap panggilan. Perbezaannya ialah janji memberikan abstraksi lain: fungsi ini mengembalikan objek janji.

Kenapa guna promise

Salah satu faedah menggunakan janji ialah anda melarikan diri daripada logik pemikiran tetap panggilan balik. Janji menjadikan mekanisme pemprosesan tak segerak kelihatan lebih seperti penyegerakan Berdasarkan fungsi segerak, kita boleh menangkap nilai pulangan dan nilai pengecualian seperti yang diharapkan. Ralat boleh ditangkap pada bila-bila masa dalam program dan memintas kod berikutnya yang bergantung pada pengecualian program Kita tidak perlu memikirkan manfaat penyegerakan ini. Oleh itu, tujuan menggunakan janji adalah untuk mendapatkan gabungan fungsi dan keupayaan menggelegak ralat sambil mengekalkan keupayaan untuk menjalankan kod secara tidak segerak.

Promise ialah objek kelas pertama dan disertakan dengan beberapa konvensyen.

• Hanya satu azam atau penolakan akan dipanggil.

• Jika janji dilaksanakan atau ditolak, pengendali yang bergantung kepada mereka akan tetap dipanggil.

• Pengendali sentiasa dipanggil secara tidak segerak.

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan