01/10/2018, 08:21

Xử lý đồng bộ trong code js, react native

500 anh em cho hỏi vấn đề react native và js
synchronously và async.
Mình code mấy ngày hôm nay rồi, nhưng vẫn chửa giải quyết đc
Bài toán: là mình fetch(api google map). Sau đó gán vào state. Rồi set region cho MapView để show ra. Chỉ có mỗi thế!!!
Vấn đề: Nhưng khổ nỗi là cái MapView của mình nó render ra trước cả cái hàm fetch(api). Đén lúc MapView render xong thì hàm fetch(api) mới xong. Vì thế MapView nó báo lỗi ko thể cập nhật dữ liệu
Giải quyết: Mình đã nhét hàm fetch() vào componentWilMount và test cả ở constructor nhưng vẫn ko dc.
Sử dụng luôn cả await nhưng cũng ko ăn thua.
Anh em nào đã từng giải quyết vấn đề đồng bộ và không đồng bộ thì giúp mình nhá:D.

nguyen viết 10:24 ngày 01/10/2018

đã fix đc lỗi :D. Ad close hộ em nhá .

Người bị bơ viết 10:25 ngày 01/10/2018

Có nút tick chọn câu trã lời đúng dưới commnet, tick vào đó bài tự trôi.

明玉 viết 10:32 ngày 01/10/2018

Bạn cũng nên đưa giải pháp của bạn lên, cho những người đi sau nếu cũng gặp lỗi này thì đỡ khổ

Luong Nguyen viết 10:31 ngày 01/10/2018

thì bạn tạo một dữ liệu default cho MapView, hoặc không thì trong thời gian load cho hiện lên “loading…” . Chứ tốt nhất không nên bắt buộc phải get được dữ liệu từ google map mới show ra màn hình.
Lưu ý là bạn có nèm vào đâu (componentWillMount hay constructor) thì những xử lý liên quan đến IO sẽ luôn là bất đồng bộ. js (chứ không phải reactjs hay react native) sẽ không đợi đến lúc nhận kết quả rồi mới execute đoạn code tiếp theo.

nguyen viết 10:31 ngày 01/10/2018

ng dưới commnet, tick vào đó bài tự t

Mình có tao default dữ liệu cho MapView đấy chứ. Nhưng trong quá trình setState, mình chỉ setState mỗi lat và lon trong object, cứ nghĩ là latDelta, lonDelta ko cập nhật thì ko phải ghi. Chỉ có đơn giản mỗi thế :D:D

Bài liên quan
0