Xử lí bất đồng bộ Asynchronous trong RESTful API
<p>
Em có 2 đoạn code như sau:
</p>
<p>
</p>
<pre>
btn_start.setOnClickListener(view -> {
if (txt_cms_address.getText() != null) {
cmsAddress = txt_cms_address.getText().toString();
Log.d(TAG, "CMS" + cmsAddress);
APIRegisterDisplay();
// APISchedule();
// APIGetRequiredFile();
if (checkConnect) {
// APIGetRequiredFile();
// APISchedule();
Log.d(TAG, "check ok");
} else {
Log.d(TAG, "check k ok");
}
} else {
Toast.makeText(this, "Address must not be empty!!", Toast.LENGTH_SHORT).show();
}
});
</pre>
<p>
</p>
<p>
Với các hàm APIRegisterDisplay(), APIGetRequiredFile(), APISchedule() là các asynchronous để dùng restful api bằng Retrofit2.
</p>
<p>
</p>
<p>
</p>
<p>
</p>
<p>
Vấn đề ở đây, khi em bấm vào btn, em chạy APIRegisterDisplay() trước, nếu kq từ api trả về = 0, hay biến <code>checkConnect == true</code> thì tiếp tục chạy 2 hàm APIGetRequiredFile() và APISchedule()
</p>
<p>
</p>
<p>
Vì là bất đồng bộ nên em không biết xử lí thế nào. Nếu trong <code>if(checkConnect)</code> ở đoạn code đầu, thì nó luôn trả về "check ko ok". Còn nếu bỏ trong <code>if (display != null)</code> ở đoạn code 2, thì hình như nó không chạy.
</p>
<p>
</p>
<p>
Mọi người có cách hay keyword nào về xử lí cái này có thể giúp em với ạ.
</p>
<p>
Em xin cảm ơn.
</p>
<p>
</p>