小编For*_*e_7的帖子

如何启用ctr + scrollwheel以放大Google Maps Api

您好我使用谷歌地图API https://angular-maps.com/,我想只在按住Ctrl +滚动滚轮时进行缩放.阅读文档我发现了这个:

gestureHandling此设置控制如何处理地图上的手势.允许值:

'合作'(双指触摸手势平移和缩放地图.地图不处理单指触摸手势.)'贪婪'(所有触摸手势平移或缩放地图.)'无'(地图不能是用户手势平移或缩放.)'auto'[默认](手势处理是合作的还是贪婪的,取决于页面是否可滚动.输入:|||

默认值:auto

所以在我的代码中我补充说:

<agm-map
    [latitude]="lat" 
    [longitude]="lng"
    [zoom]="zoom"
    [gestureHandling]="cooperative"
    [mapTypeControl]="true"
    [mapTypeControlOptions]="mapType"
    >
Run Code Online (Sandbox Code Playgroud)

但是没有用,它没有让我按ctrl来缩放.

google-maps angular

7
推荐指数
2
解决办法
2079
查看次数

可观察的异步与同步

我怎么知道Observable生产者何时是异步还是同步?

同步示例:

Observable.of([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)

另一个异步示例(ngrx Store,请看这里)

this.store.take(1);
Run Code Online (Sandbox Code Playgroud)

而现在一个明显的异步示例:

this.http.get(restUrl)
Run Code Online (Sandbox Code Playgroud)

我完全理解它是如何工作的,并且一些Observable可以同步和其他异步.我不明白的是我怎么能预先区分出来?例如,生产者有一个明显的界面告诉我它会是异步的吗?

TL;博士

这个问题出现的主要原因是由于上面链接的答案(这里).@Sasxa已经(正确地)回答我们可以使用同步调用从ngrx存储中获取最新值:

function getState(store: Store<State>): State {
    let state: State;

    store.take(1).subscribe(s => state = s);

    return state;
}
Run Code Online (Sandbox Code Playgroud)

然而,知道可观察量通常是异步的,我看到了这一点并立即想到了RACE CONDITION!在subscribe调用函数之前,该方法可以返回一个未定义的值.

我通过Store和Observable的内部调试,这个例子确实是同步的,但我应该怎么知道呢?对于那些NGRX知道,select方法 store(用于获取最新的值)是异步的,毫无疑问的,因为这是给我们的反应鬼,这就是为什么我来到假设我做到了.

这意味着我无法重构上面的代码如下:

function getLatest(observable: Observable): any {
    let obj: any;

    observable.take(1).subscribe(latest => obj = latest);

    return obj;
}
Run Code Online (Sandbox Code Playgroud)

我可以用任何Observable来调用它,它可以用于同步生成器 - 它甚至可以用于异步生成器的某些时间,但是如果传入异步observable,这毫无疑问是竞争条件.

javascript rxjs ngrx angular

6
推荐指数
2
解决办法
6516
查看次数

标签 统计

angular ×2

google-maps ×1

javascript ×1

ngrx ×1

rxjs ×1