<div id="viewDiv">
</div>
html,
body,
#viewDiv {
  padding: 0;
  margin: 0;
  height: 100%;
  width: 100%;
}
require([
  "esri/Map",
  "esri/views/MapView",
  "esri/layers/FeatureLayer",
  "esri/core/watchUtils"
], function(EsriMap, MapView, FeatureLayer, { whenFalseOnce, whenFalse }) {
  
  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",
    layers: [fLayer, fLayer2]
  });
  
  const view = new MapView({
    container: "viewDiv",
    map: map,
    center: [-118, 34],
    zoom: 9
  });
  
  const goTo = view.goTo.bind(view);
  
  let layerView1
  let layerView2;
  Promise.all([
    view.whenLayerView(fLayer),
    view.whenLayerView(fLayer2)
  ]).then(([lyrView1, lyrView2]) => {
      layerView1 = lyrView1;
      layerView2 = lyrView2;
      return Promise.all(
        [
          whenFalseOnce(layerView1, "updating"),
          whenFalseOnce(layerView2, "updating")
        ]
      );
  }).then(() => {
    console.log("all layerViews done updating");
    whenFalse(layerView1, "updating", () => {
      console.log("layerView1 has updated");
    });
    whenFalse(layerView2, "updating", () => {
      console.log("layerView2 has updated");
    });
  });
});
Run Pen

External CSS

  1. https://js.arcgis.com/4.14/esri/themes/dark/main.css

External JavaScript

  1. https://js.arcgis.com/4.14