从承诺中获取一个数字

时间:2016-05-23 12:38:15

标签: javascript typescript angular promise

我有:

 getZoom(): Promise<number> {
    return this._googleMapsApi.getMap().then((map:google.maps.Map) => map.getZoom());
}

我想查看缩放级别:

private onStartZoomEvent() {
    console.log('on start zoom');
    if (this._mapController.getZoom().valueOf() !== 12) {
    this.disableGeolocationButton();
    this._eventAggregator.trigger(this.disableGeolocation);
     }
}

我做错了什么?

1 个答案:

答案 0 :(得分:4)

承诺的一点是你不能同步获得价值。当你调用getZoom()时,它会返回一个promise。然后,您尝试在该Promise上调用valueOf();方法不存在,承诺尚未实现。

看起来应该是这样的:

private onStartZoomEvent() {
    console.log('on start zoom');
    this._mapController.getZoom()
        .then((zoom) => {
            if (zoom.valueOf() !== 12) {
            this.disableGeolocationButton();
            this._eventAggregator.trigger(this.disableGeolocation);
        });
    }
}