node.js接收异步任务结果的两种方法----callback和事件广播

  • 事件广播 发送方调用emit方法,接收方调用on方法,无论发送方或是接收方,都会工作在一个频道
声明了一个模块,用于读取mime.json中的记录
var fs = require(‘fs‘);
var events = require(‘events‘);
var eventemitter = new events.EventEmitter();
var getmimetype = function (path,eventemitter,suffix) {
    fs.readFile(path,function (err,data) {
        if(err){
            console.log(err);
            return false;
        }
        var filedata = JSON.parse(data.toString());
        eventemitter.emit(‘wenwa‘,filedata[suffix]);
        //console.log(filedata[suffix])
    })
};
module.exports = getmimetype;
  • 接收方
也就是在另一个文件中调用写好的模块,并声明广播的接收方
var eventer = require(‘./readfile_events‘);
var fs = require(‘fs‘);
var events = require(‘events‘);
var eventemitter = new events.EventEmitter();
eventer(‘./mime.json‘,eventemitter,‘.css‘);
eventemitter.on(‘wenwa‘,function (data) {
    console.log(data)
});
  • 回调函数
//定义模块var fs = require(‘fs‘);
var gettype = function (suffix,callback) {
    fs.readFile(‘./mime.json‘,function (err,data) {
        if(err){
            console.log(err);
            return false;
        }
        var filedata = JSON.parse(data.toString());
        //console.log(filedata[suffix]);
        callback(filedata[suffix])
    })
};
module.exports = gettype;
//调用模块var gettype = require(‘./readfilecallback.js‘);
var fs = require(‘fs‘);
var events = require(‘events‘);
var eventemitter = new events.EventEmitter();
gettype(‘.323‘,mycallback);
function mycallback(data) {
    console.log(data)
}

原文地址:https://www.cnblogs.com/saintdingspage/p/11737419.html

时间: 2024-10-05 05:09:37

node.js接收异步任务结果的两种方法----callback和事件广播的相关文章

使用js提交form表单的两种方法

提交form表单的时候瑶族一些简单的验证,验证完后才能提交,避免无效提交. 1.当输入用户名和密码为空的时候,需要判断.这时候就用到了校验用户名和密码,这个需要在前端页面写:有两种方法,一种是用submit提交.一种是用button提交.方法一: 在jsp的前端页面的头部插入一个js方法: function checkUser(){ var result = document.getElementById("userid").value; var password = document

js阻止表单提交的两种方法

<body>     <form action="clock.html" method="post" onsubmit="return checkLength()">         <p>name:<input type="text" name="user" id="user"></p>         <input t

js实现元素宽度反弹的两种方法

方法一:此方法,不是我想的,但是超级喜欢,太漂亮了 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>02</title> <style> #outer{ width:1400px; height:400px; background-color: pink; } #inner{ width:20

ShellExecuteEx 阻塞和异步调用进程的两种方法

阻塞: SHELLEXECUTEINFO ShExecInfo = { 0 }; ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO); ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS; ShExecInfo.hwnd = NULL; ShExecInfo.lpVerb = NULL; ShExecInfo.lpFile = (LPCWSTR)newAppPath.utf16(); // _telegramPath.toL

js中字符串转换为数值的两种方法的区别

在js中字符串转换为数值的方法有三种:转换函数,强制类型转换,隐式转换 1.转换函数 parseInt()   //将字符串转换为整型 parseFloat()  //将字符串转换为浮点型 转换函数在进行类型转换时是可以传入参数的,默认转换为10进制,转换成功后返回的是整数类型的数值. 例:1. parseInt('AB3', 16) //返回结果:2739,表示将字符串转换为16进制的数值 2.parseInt('13', 10) //返回结果:13,表示将字符串转换为10进制的数值 3.pa

js实现表单序列化的两种方法。

function serialize(form) { var parts = [], elems = form.elements, i = 0, len = elems.length, filed = null; for (; i < len; i++) { filed = elems[i]; switch (filed.type) { case "select-one": case "select-multiple": if (filed.name.leng

[MongoDB学习笔记-02] Node.js连接MongoDB的两种方法

MongoDB Node.js驱动程序是被官方所支持的原生Node.js驱动程序,他是至今为止最好的实现, 并且得到了MongoDB官方的支持.MongoDB团队已经采用MongoDB Node.js驱动程序作为标准方法. npm install mongodb@1.4.3 // MongoDB Node.js驱动程序 npm install mongoose@3.8.8 //mongoose模块 要从Node.js连接MongoDB数据库我们有两种方法可选择: 通过实例化mongodb模块中提

【译】深入理解python3.4中Asyncio库与Node.js的异步IO机制

转载自http://xidui.github.io/2015/10/29/%E6%B7%B1%E5%85%A5%E7%90%86%E8%A7%A3python3-4-Asyncio%E5%BA%93%E4%B8%8ENode-js%E7%9A%84%E5%BC%82%E6%AD%A5IO%E6%9C%BA%E5%88%B6/ 译者:xidui原文: http://sahandsaba.com/understanding-asyncio-node-js-python-3-4.html 译者前言 如

对Node.js的异步机制的思考

Node.js的异步机制是其最大的特色,异步可以应对高并发,具有很好的性能. 但是如果在某个方法里,涉及到数据库的多层查询,异步机制反而成为阻碍.当执行完第一层SQL后,根据所得的结果集(rows)进行结果集进行遍历时,每次遍历的结果作为where条件再执行下一层SQL时,下一层及以后的SQL并不会执行,而是在结果集(rows)遍历到最后时,才执行下一层SQL. 这时,若SQL只有两三层,其实倒还好,可以合并SQL:但是SQL层数多了之后,这种异步机制却是最大的阻碍.这时,就需要用到Node.j