I had the same issue when I was using wkid as string instead of number, coming from a JSON configuration file. After changing wkid to number, the extent for the tile service was loaded correctly. Instead of: new SpatialReference({wkid: "2056"}) use this: new SpatialReference({wkid: 2056}) map.spatialReference is not available before map loading is complete.
... View more