返回顶部
首页 > 资讯 > 前端开发 > node.js >nodejs中简单实现Javascript Promise机制的实例
  • 142
分享到

nodejs中简单实现Javascript Promise机制的实例

实例机制简单 2022-06-04 17:06:48 142人浏览 独家记忆
摘要

promise/deferred 是一个很好的处理异步调用编码的规范,下面以nodejs代码为类,来实现一个promise/A 规范的简单实现 var EventEmitter = require('

promise/deferred 是一个很好的处理异步调用编码的规范,下面以nodejs代码为类,来实现一个promise/A 规范的简单实现

var EventEmitter = require('events').EventEmitter; var Http = require('http'); var util = require('util'); // 定义promise对象 var Promise = function(){ // 实现继承事件类 EventEmitter.call(this); } // 继承事件通用方法 util.inherits(Promise, EventEmitter); // then 方法为promise/A 规范中的方法 Promise.prototype.then = function(successhandler, errorHandler, progressHandler){ if (typeof successHandler == 'function'){ this.once('success', successHandler); } if (typeof errorHandler === 'function'){ this.once('error', errorHandler); } if (typeof progressHandler === 'function'){ this.on('process', progressHandler); } return this; }

// 定义延迟对象 // 包含一个状态和一个promise对象 var Deferred = function(){ this.state = 'unfulfilled'; this.promise = new Promise(); } Deferred.prototype.resolve = function(obj){ this.state = 'fulfilled'; this.promise.emit('success', obj); } Deferred.prototype.reject = function(err){ this.state = 'failed'; this.promise.emit('error', err); } Deferred.prototype.progress = function(data){ this.promise.emit('process', data); }

// 利用一个http请求来运用上面定义的promise/deferred

var client = function(){ var options = { hostname:'www.baidu.com', port:80, path:'/', method: 'get' }; var deferred = new Deferred(); var req = http.request(options, function(res){ res.setEncoding('utf-8'); var data = ''; res.on('data', function(chunk){ data += chunk; deferred.progress(chunk); }); res.on('end', function(){ deferred.resolve(data); }); }); req.on('error', function(err){ deferred.reject(err); }) req.end(); return deferred.promise; } client().then(function(data){ console.log('请求完成', data); }, function(err){ console.log('访问错误', err); }, function(chunk){ console.log('正在读取', chunk); });

代码保存为promise.js,可以在命令行下面运行,直接输入node promise.js,即可看到运行效果。

--结束END--

本文标题: nodejs中简单实现Javascript Promise机制的实例

本文链接: https://lsjlt.com/news/11971.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作