I missed that about watchUtils going away! Looks like it's getting replaced by reactiveUtils. Looking forward to hearing from the Esri team on this.
EDIT: I got reactiveUtils working with api v4.26 in the sample from @ReneRubalcava
require([
"esri/Map",
"esri/views/MapView",
"esri/layers/FeatureLayer",
"esri/core/reactiveUtils"
], function(EsriMap, MapView, FeatureLayer, reactiveUtils) {
const fLayer = new FeatureLayer({
portalItem: {
id: "848d61af726f40d890219042253bedd7"
}
});
const fLayer2 = new FeatureLayer({
url: "https://services.arcgis.com/P3ePLMYs2RVChkJx/arcgis/rest/services/ACS_Population_by_Race_and_Hispanic_Origin_Boundaries/FeatureServer/2"
});
const map = new EsriMap({
basemap: "dark-gray-vector",
layers: [fLayer, fLayer2]
});
const view = new MapView({
container: "viewDiv",
map: map,
center: [-118, 34],
zoom: 9
});
const goTo = view.goTo.bind(view);
Promise.all([
view.whenLayerView(fLayer),
view.whenLayerView(fLayer2)
]).then(([layerView1, layerView2]) => {
return Promise.all(
[
reactiveUtils.whenOnce(() => !layerView1.updating),
reactiveUtils.whenOnce(() => !layerView2.updating)
]
);
}).then(() => {
console.log("done updating")
});
});