Saya memiliki satu pabrik yang ditentukan dengan ngResource:
App.factory('Account', function($resource) {
return $resource('url', {}, {
query: { method: 'GET' }
});
});
Saya membuat beberapa panggilan ke metode kueri yang ditentukan di pabrik ini. Panggilan dapat terjadi secara asinkron, tetapi saya harus menunggu kedua panggilan selesai sebelum melanjutkan:
App.controller('AccountsCtrl', function ($scope, Account) {
$scope.loadAccounts = function () {
var billingAccounts = Account.query({ type: 'billing' });
var shippingAccounts = Account.query({ type: 'shipping' });
// wait for both calls to complete before returning
};
});
Apakah ada cara untuk melakukan ini dengan pabrik AngularJS yang ditentukan dengan ngResource, mirip dengan fungsionalitas $ .when (). Then () jQuery? Saya lebih suka untuk tidak menambahkan jQuery ke proyek saya saat ini.
$then
properti tetapi tidak menampilkan objek promise apa pun. Mengekspos$promise
sepenuhnya akan berada di 1.1.4$q
, yang Anda tautkan, ini menjamin bahwa larik hasil berada dalam urutan yang sama dengan larik promise.Saya pikir solusi yang lebih baik adalah:
sumber
Solusi dari Ben Lesh adalah yang terbaik tetapi belum lengkap. Jika Anda perlu menangani kondisi kesalahan - dan, ya, Anda melakukannya - maka Anda harus menggunakan
catch
metode pada promise API seperti ini:Jika Anda tidak mendefinisikan
catch
dan semua janji Anda gagal, makathen
metode tersebut tidak akan pernah dijalankan dan dengan demikian mungkin akan membuat antarmuka Anda dalam keadaan buruk.sumber