بِسْـــــــــمِ ﷲِالرَّحْمَنِ الرَّحِيم. اَللَّهُمَّ صَلِّى عَلَى مُحَمَّدٍٍ، وَعَلَى آلِهِ مُحَمَّدٍٍ



Controller tak tunggu function async habis kerja

Salah satu perkara yang Tedi tak berapa nak faham pasal AngularJS ini ialah function function dalam controller tak semestinya akan beroperasi ikut turutan.

Akan ada function yang hanya dipanggil controller dan kemudian ditinggalkan tanpa menunggu ia pulangkan apa-apa. Function ini adalah function async. Kelebihannya proses load akan lebih pantas.

Jadi kesilapan yang Tedi buat adalah Tedi mengharapkan fungsi async ni untuk return value yang akan digunakan function lain. Hasilnya function lain tu menerima nilai undefined kerana value yang sebenarnya hanya tiba setelah function lain ini dipanggil.

 Rujukan: AngularJS - Controller not waiting for a service return value in a conditional statement - Stack Overflow

Untuk membaiki masalah ini Tedi kena hantar function apa kepada function itu untuk dilaksanakan setelah function async itu siap. Kita hantar function ini dalam parameter, mungkin lebih terkenal sebagai callback function.

<top>


Silap susunan semasa declare dan panggil function

Hari ini seharian Tedi memikirkan kenapalah function file upload menggunakan plug in jQuery blueimp/jQuery-File-Upload tak jalan-jalan di mana options done tidak triggered.

Rupa-rupanya kod Tedi telah declare $scope.options terlebih dahulu sebelum $scope.done dan $scope.fail, iaitu dua function yang akan triggered by $scope.options. Susunan yang betul ialah $scope.done dan $scope.fail kita declare sebelum $scope.options.

Menggunakan directive angularJS kita boleh gunakan directive file-upload:

<form id="uploadForm" name="uploadForm" file-upload="options" method="POST" enctype="multipart/form-data" novalidate >

~20210826~
jika kiriman ini bermanfaat, tolong lawat iklan yang ada ya, terima kasih