I have an issue with JavaScript Promise where in one of the promise is not moving into then()
Below is the code I am trying to accomplish.
Background: I have not used Promise before, but have read through few articles.
function doStart(){
var loadedMap = loadBasemap([layer0]);
loadedMap.then(function (v) {
view = loadView(MAP_CANVAS_ID, map);
...
});
...
}
function loadBasemap(layers) {
if (LayerSettings && LayerSettings.hasOwnProperty('basemap') && LayerSettings.basemap.hasOwnProperty('baseMapLayers')) {
new Promise(function () {
updateToDefaultLayerSetting();
}).then(function () {
map = new Map({
basemap: Basemap.fromJSON(LayerSettings.basemap),
layers: layers
});
});
return new Promise((resolve, reject) => resolve(map));
}
else {...}
}
async function updateToDefaultLayerSetting() {
console.log("Calling default");
const result = await actionDefaultBasemap();
console.log(result);
}
var defaultBasemap;
function actionDefaultBasemap() {
let portalA = new Portal(portalConfig);
new Promise(function () {
portalA.load().then(function () {
defaultBasemap = portalA.useVectorBasemaps ? portalA.defaultVectorBasemap : portalA.defaultBasemap;
}).then(function () {
if (LayerSettings.basemap.baseMapLayers[0].hasOwnProperty('url') && typeof defaultBasemap.resourceInfo !== "undefined") {
LayerSettings.basemap.baseMapLayers[0].id = defaultBasemap.resourceInfo.data.baseMapLayers[0].id;
LayerSettings.basemap.baseMapLayers[0].title = defaultBasemap.resourceInfo.data.baseMapLayers[0].title;
LayerSettings.basemap.baseMapLayers[0].url = defaultBasemap.resourceInfo.data.baseMapLayers[0].url;
}
});
})
return new Promise((resolve, reject) => resolve(defaultBasemap));
}
Execution Order is as below:
- doStart()
- loadBasemap(layers)
- updateToDefaultLayerSetting()
- actionDefaultBasemap()
The process is execulting the then() inside actionDefaultBasemap() but not reaching the then() in loadBasemap().
Not sure where the process is breaking. I would need the map object to be returned to
view = loadView(MAP_CANVAS_ID, map);
Any advise would be helpful.