在時用react時, 常常會出現在創建一個對象后, 對象還沒有創建完成就被使用的異步問題, 介於這種問題, 一種解決方法就是使用Promise, 將需要被等待的那一步放到Promise中, Promise會強制等這步執行完才會進行下一步, 例如
1 new Promise((resolve, reject) => { 2 const amaps = AMap.service(['AMap.PlaceSearch'], () => { 3 placeSearch = new AMap.PlaceSearch({ // 構造地點查詢類 4 pageSize: roadSize, 5 pageIndex: roadPage, 6 city: '0571', 7 map: gdMap, 8 }); 9 }); 10 resolve(amaps); 11 }).catch((error) => { 12 reject(error); 13 }).then((json) => { 14 console.log(json, placeSearch); 15 }); 16 placeSearch.search(param, (status, result) => { 17 if (roadData.length > 0) { 18 for (let i = 0; i < 10; i += 1) { 19 ...... 20 } 21 }); 22 }
以上代碼, 在Promise中, 只有等里面所有的對象都被創建完成了, 才會繼續往下執行, 以達到同步的效果