SandboXP

Форк
0
/
worker_bus.js 
63 строки · 1.2 Кб
1
"use strict";
2

3
var WorkerBus = {};
4

5
/** @constructor */
6
WorkerBus.Connector = function(pair)
7
{
8
    this.listeners = {};
9
    this.pair = pair;
10

11
    pair.addEventListener("message", function(e)
12
    {
13
        var data = e.data;
14
        var listeners = this.listeners[data[0]];
15

16
        for(var i = 0; i < listeners.length; i++)
17
        {
18
            var listener = listeners[i];
19
            listener.fn.call(listener.this_value, data[1]);
20
        }
21
    }.bind(this), false);
22

23
};
24

25
WorkerBus.Connector.prototype.register = function(name, fn, this_value)
26
{
27
    var listeners = this.listeners[name];
28

29
    if(listeners === undefined)
30
    {
31
        listeners = this.listeners[name] = [];
32
    }
33

34
    listeners.push({
35
        fn: fn,
36
        this_value: this_value,
37
    });
38
};
39

40
/**
41
 * Send ("emit") a message
42
 *
43
 * @param {string} name
44
 * @param {*=} value
45
 * @param {*=} transfer_list
46
 */
47
WorkerBus.Connector.prototype.send = function(name, value, transfer_list)
48
{
49
    dbg_assert(arguments.length >= 1);
50

51
    if(!this.pair)
52
    {
53
        return;
54
    }
55

56
    this.pair.postMessage([name, value], transfer_list);
57
};
58

59

60
WorkerBus.init = function(worker)
61
{
62
    return new WorkerBus.Connector(worker);
63
};
64

65

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.