小编Jos*_*ong的帖子

如何使用hammer.js 2获得正确的事件传播?

我正在使用Hammer.js 2.0.4,我有两个hammerjs实例来监听tap事件:在父div元素中,在子元素中有一个.我希望在孩子处理时停止事件传播.但是,hammer.js 2不支持.

在下面的示例中,我希望tap子事件的事件首先触发,然后触发父事件的事件(事件从子节点冒泡到父节点).相反,它看起来像第一个创建的hammer.js 实例tap事件首先触发.

尝试以下示例(也在jsbin上):

<!DOCTYPE html>
<html>
<head>
  <script src="//cdn.jsdelivr.net/hammerjs/2.0.4/hammer.js"></script>
  <style>
    #child {
      width: 200px;
      height: 200px;
      background: lightgreen;
    }
  </style>
</head>
<body>
<p>
  See the browser console. Why does the tap event of the parent div fire first?
</p>
<div id="parent">
  <div id="child">click here</div>
</div>

<script>
  var hammerParent = new Hammer(document.getElementById('parent'));
  var hammerChild = new Hammer(document.getElementById('child'));

  hammerParent.on('tap', function (event) {
    console.log('tap parent');
  });

  hammerChild.on('tap', …
Run Code Online (Sandbox Code Playgroud)

javascript touch event-propagation hammer.js

5
推荐指数
1
解决办法
704
查看次数

如何正确地将Java中的双精度放到两位数

我试图在Java应用程序中将两个数字(不是圆形!)加倍到两位数.我使用DecimalFormat这个,但注意到对于接近于零的负值,值不会四舍五入-0.01-0.00.

public class MyTest {

    void formatAndPrint(double value) {
        DecimalFormat df = new DecimalFormat("0.00");
        df.setRoundingMode(RoundingMode.FLOOR);

        System.out.println(value + " => " + df.format(value));
    }

    @Test
    public void testFloor() {
        formatAndPrint(2.3289);  //  2.32
        formatAndPrint(2.3);     //  2.30
        formatAndPrint(-1.172);  // -1.18
        formatAndPrint(0.001);   //  0.00
        formatAndPrint(0.0001);  //  0.00
        formatAndPrint(-0.001);  // -0.01
        formatAndPrint(-0.0001); // -0.00 WRONG, expected: -0.01
    }
}
Run Code Online (Sandbox Code Playgroud)

其他的解决方案,如Math.floor(value * 100.0) / 100.0没有这个问题,但有其他的问题,比如错误地地板2.32.29.

Java的地板解决方案是否适用于所有情况?

java math double floor

5
推荐指数
1
解决办法
401
查看次数

MongoDB Atlas集群的数据大小是如何计算的:文档大小还是存储大小?

MongoDB Atlas将 MongoDB 托管在云端,有多种大小可供选择,如 2GB、5GB、10GB 等。

我不清楚哪种数据大小适用:在我的例子中,我有一个文档大小为 1.6 GB 的数据库,存储大小约为 0.5 GB(因为文档在存储时被压缩)。

MongoDB Atlas的大小限制是指数据库的文档大小还是存储大小

storage mongodb

5
推荐指数
1
解决办法
5546
查看次数

如何在函数注释中描述返回的promise?

在编写JavaScript代码时,我总是注释我在这里描述的函数,例如:

/**
 * Add two values
 * @param {Number} a
 * @param {Number} b
 * @returns {Number} the sum of a and b
 */
function add(a, b) {
  return a + b;
}
Run Code Online (Sandbox Code Playgroud)

现在,当我编写一个返回Promise的异步函数时,这将是:

/**
 * Add two values
 * @param {Number} a
 * @param {Number} b
 * @returns {Promise} the sum of a and b
 */
function add(a, b) {
  return new Promise(function (resolve, reject) {
    resolve(a + b);
  });
}
Run Code Online (Sandbox Code Playgroud)

但是现在返回类型(Promise)的描述错过了Promise在解析时将返回什么类型的信息.

如何表示返回的承诺将以Number? …

javascript annotations promise

4
推荐指数
1
解决办法
674
查看次数

有没有办法在打开 WebSocket 时发送元数据?

我正在寻找一种在打开 WebSocket 时向服务器发送唯一标识符的方法。

我可以通过在连接后发送握手消息来实现这一点,但如果不需要的话那就太好了,相反我可以通过元数据发送和读取标识符,类似于 http 请求中的标头字段。

有没有办法在打开 WebSocket 时发送元数据?

javascript websocket node.js

3
推荐指数
1
解决办法
2422
查看次数

事先捕获一个承诺的TimeoutError

我有一个可以取消的蓝鸟承诺.取消后,我必须做一些工作来巧妙地中止正在运行的任务.可以通过两种方式取消任务:通过promise.cancel()promise.timeout(delay).

为了能够在取消或超时时巧妙地中止任务,我必须捕获CancellationErrors和TimeoutErrors.捕获CancellationError有效,但由于某种原因我无法捕获TimeoutError:

var Promise = require('bluebird');

function task() {
  return new Promise(function (resolve, reject) {
        // ... a long running task ...
      })
      .cancellable()
      .catch(Promise.CancellationError, function(error) {
        // ... must neatly abort the task ...
        console.log('Task cancelled', error);
      })
      .catch(Promise.TimeoutError, function(error) {
        // ... must neatly abort the task ...
        console.log('Task timed out', error);
      });
}

var promise = task();

//promise.cancel(); // this works fine, CancellationError is caught

promise.timeout(1000); // PROBLEM: this TimeoutError isn't caught!
Run Code Online (Sandbox Code Playgroud)

如何 …

timeout promise bluebird

2
推荐指数
1
解决办法
2646
查看次数