Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有自定义事件和异步工作的自定义类,供浏览器使用_Javascript_Node.js_Dom Events - Fatal编程技术网

Javascript 具有自定义事件和异步工作的自定义类,供浏览器使用

Javascript 具有自定义事件和异步工作的自定义类,供浏览器使用,javascript,node.js,dom-events,Javascript,Node.js,Dom Events,我创建了一个带有异步工作和自定义事件的简单类。此版本适用于Node.js: 'use strict'; const EventEmitter = require('events'); // Custom class with the custom event and async work class Foo extends EventEmitter{ // Some async work with notifying doWork(data){ const

我创建了一个带有异步工作和自定义事件的简单类。此版本适用于Node.js:

'use strict';
const EventEmitter = require('events');

// Custom class with the custom event and async work
class Foo extends EventEmitter{

    // Some async work with notifying
    doWork(data){

        const self = this;

        if(!data || 'number' != typeof data) {
            self.emit('work-done', new Error('Invalid data'));
            return;
        }
        else{

            // Some long work...
            function fib(n){
                return n < 2 ? n : fib(n - 1) + fib(n - 2);
            };

            // Start async work
            process.nextTick(function(){
                try{
                    const result = fib(data);
                    self.emit('work-done', null, result);
                }
                catch(err){
                    self.emit('work-done', err);
                }
            });
        }
    };
};

// Foo class using example
const foo = new Foo();
foo.on('work-done', (err, result) => {
    if(err) console.log(err);
    else console.log('Result: ' + result);
});

foo.doWork('jjjj'); // Error case
console.log();
foo.doWork(43); // Success case

console.log("Hello! Let's talk while I'm working.");
console.log('How are you?');
console.log();
“严格使用”;
const EventEmitter=require('events');
//具有自定义事件和异步工作的自定义类
类Foo扩展了EventEmitter{
//一些异步操作可以使用通知
道工(数据){
const self=这个;
如果(!data | |'number'!=数据类型){
emit('work-done',新错误('Invalid data');
返回;
}
否则{
//一些长期的工作。。。
函数fib(n){
返回n<2?n:fib(n-1)+fib(n-2);
};
//启动异步工作
process.nextTick(函数(){
试一试{
常数结果=fib(数据);
self.emit('work-done',null,result);
}
捕捉(错误){
self.emit('work-done',err);
}
});
}
};
};
//使用示例的Foo类
const foo=新foo();
foo.on('工作完成',(错误,结果)=>{
if(err)console.log(err);
else console.log('Result:'+Result);
});
foo.doWork('jjj');//错误案例
console.log();
foo.doWork(43);//成功案例
log(“你好!让我们边工作边聊吧。”);
log(“你好吗?”);
console.log();
它毫无问题地工作。我得到的结果是:

Error: Invalid data
    at Foo.doWork (C:\nodejs\index.js:13:27)
    at Object.<anonymous> (C:\nodejs\index.js:44:5)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)
    at Module.runMain (module.js:604:10)
    at run (bootstrap_node.js:389:7)
    at startup (bootstrap_node.js:149:9)

Hello! Let's talk while I'm working.
How are you?

Result: 433494437
错误:无效数据
在Foo.doWork(C:\nodejs\index.js:13:27)
反对。(C:\nodejs\index.js:44:5)
在模块处编译(Module.js:570:32)
在Object.Module.\u extensions..js(Module.js:579:10)
在Module.load(Module.js:487:32)
在tryModuleLoad时(module.js:446:12)
在Function.Module.\u加载(Module.js:438:3)
位于Module.runMain(Module.js:604:10)
运行时(bootstrap_node.js:389:7)
启动时(bootstrap_node.js:149:9)
你好我们一边工作一边谈吧。
你好吗?
结果:433494437

现在我想在我的JavaScript代码中使用我的
Foo
类,它将被web浏览器使用。如何为这个问题重写
Foo
类?我要在代码中做哪些更改?

您需要使用webpack或browserify生成与浏览器兼容的代码您需要使用webpack或browserify生成与浏览器兼容的代码