RequireJS Singleton与Web Workers

马丁

我正在使用最新的RequireJS创建一个Javascript项目。我正在定义一个ChessWorker模块,如下所示:

var worker;

define("chessWorker", ["jquery", "messageListener"], function($, listener) {
    if (worker) {
        return worker;
    } else {
        $.ajax({
            url: "...",
            success: function(data) {
                worker = new Worker(window.URL.createObjectURL(new window.Blob([data])));

                worker.onmessage = listener

                worker.error = function(e) {
                    ...
                };

                return worker;
            }
        });
    }
});

这是不好的做法吗?如果是这样,我应该如何定义呢?是否有关于单身人士的标准定义方式?

gon250

worker确实不建议您定义为全局变量,而应使用闭包代替:

define(function(){
    var instance = null;

    function MySingleton(){
        if(instance !== null){
            throw new Error("Cannot instantiate more than one MySingleton, use MySingleton.getInstance()");
        } 

        this.initialize();
    }
    MySingleton.prototype = {
        initialize: function(){
            // summary:
            //      Initializes the singleton.

            this.foo = 0;
            this.bar = 1;
        }
    };
    MySingleton.getInstance = function(){
        // summary:
        //      Gets an instance of the singleton. It is better to use 
        if(instance === null){
            instance = new MySingleton();
        }
        return instance;
    };

    return MySingleton.getInstance();
});

注意:另外,请确保您的ajax调用是同步的,或者在您需要chessWorker模块时将获得null响应。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RequireJS中的Singleton

来自分类Dev

按URL划分Heroku Web Workers

来自分类Dev

关于Web Workers并行性

来自分类Dev

Web Workers handling AJAX calls - optimisation overkill?

来自分类Dev

Web Workers的Javascript功能检测模块支持

来自分类Dev

如何使用Web Workers查找交集?

来自分类Dev

使用requirejs扩展Web应用程序

来自分类Dev

Web Workers文件句柄可以包含或包含模块?

来自分类Dev

Web Workers:SetInterval和SetTimeout可靠性

来自分类Dev

在JavaScript中的Web Workers中使用Synaptic库

来自分类Dev

如何使用webpack处理Web Workers的“标准”语法?

来自分类Dev

是否可以访问.vue组件内的Web Workers

来自分类Dev

使用Firefox扩展程序中的Web Workers的XPCOM

来自分类Dev

在JavaScript中的Web Workers中使用Synaptic库

来自分类Dev

如何在Web js文件中“要求” requirejs?

来自分类Dev

HTML5 Web Workers可以/应该将CORS用于跨域吗?

来自分类Dev

在独立的V8 Javascript引擎中使用Web-Workers

来自分类Dev

javascript web workers 多线程字符串搜索比单线程慢?

来自分类Dev

RequireJS优化

来自分类Dev

requirejs错误

来自分类Dev

在ASP.NET中管理AngularJS Web应用程序(替代RequireJS)

来自分类Dev

Docker-使用Redis,Postgres,ElasticSearch,NGINX,Workers和多个ruby应用程序设置Web应用程序的建议

来自分类Dev

编写无需requirejs即可工作的Requirejs模块

来自分类Dev

requirejs忽略我的requirejs.config

来自分类Dev

Web中的SimpleInjector Singleton LifeStyle

来自分类Dev

requirejs定义:嵌套依赖

来自分类Dev

RequireJS和类继承

来自分类Dev

Using isotope with requirejs and jquery

来自分类Dev

构建RequireJS + AngularJS

Related 相关文章

热门标签

归档