小编Sté*_*car的帖子

为什么Jquery事件循环在异常时被中断

在我们的应用程序奇怪的行为(使用strophe XMPP和jquery)之后,我们发现jquery事件循环是同步的并且不会捕获异常.

这意味着如果第一个事件处理程序引发异常,则永远不会调用第二个事件处理程序.

$(document).ready(function() {
    $(document).bind('foo', onFoo);
    $(document).bind('bar', onBar); 

    $(document).trigger('foo');
    $(document).trigger('bar');
});

function onFoo(e) { 
    console.log('listener onFoo');
    throw 'fail onFoo';
}

function onBar(e) {
    console.log('listener onBar'); // not called
}
Run Code Online (Sandbox Code Playgroud)

我们期望看到两个输出,但第二个输出:"监听器onBar"从未显示过.

请参阅JQuery代码,在"触发器"函数中,处理程序循环期间没有try/catch模式.

while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
    event.type = i > 1 ?
        bubbleType :
        special.bindType || type;

    // jQuery handler
    handle = ( jQuery._data( cur, "events" ) || {} )[ event.type ] && jQuery._data( cur, "handle" );
    if ( handle ) {
        handle.apply( cur, data …
Run Code Online (Sandbox Code Playgroud)

javascript jquery javascript-events

8
推荐指数
1
解决办法
281
查看次数

如何在 Javascript 中按 15 分钟的间隔对 json 集合进行分组

假设我们在 Javascript 中有一个这样的集合:

[
    { date: 'Fri, 02 May 2014 19:05:00 GMT', value:'abc' },
    { date: 'Fri, 02 May 2014 23:43:00 GMT', value:'jkl' },
    { date: 'Fri, 02 May 2014 19:01:00 GMT', value:'def' },
    { date: 'Fri, 02 May 2014 19:09:00 GMT', value:'ghi' },
    { date: 'Fri, 02 May 2014 23:54:00 GMT', value:'mno' }
]
Run Code Online (Sandbox Code Playgroud)

我想找到一个优雅的算法来按“最近”日期按这个数组分组。如果日期在前一个日期之前或之后 15 分钟,它将被推送到同一个对象中。

我并不关心子数组的结构。此条目的结果可能是:

[
    [
        { date: 'Fri, 02 May 2014 19:05:00 GMT', value:'abc' },
        { date: 'Fri, 02 May 2014 19:01:00 GMT', value:'def' …
Run Code Online (Sandbox Code Playgroud)

javascript arrays grouping

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

标签 统计

javascript ×2

arrays ×1

grouping ×1

javascript-events ×1

jquery ×1