Node中的promise简说及入门】的更多相关文章

Node的特色之一就是异步回调,可是回调过多,就会形成著名的回调金字塔. 直接上例子,我要读取1.txt里的内容,然后在这个内容上加上'test'并重新写入文件,如下代码所示: var fs = require('fs'); fs.readFile('./1.txt', 'utf-8', function (err, msg) { if (err) { console.log(err); } else { fs.writeFile('./1.txt', msg + 'test', 'utf-8'…
最初遇到Promise是在jQuery中,在jQuery1.5版本中引入了Deferred Object,这个异步队列模块用于实现异步任务和回调函数的解耦.为ajax模块.队列模块.ready事件提供基础功能.在用jQuery操作DOM的时候对Promise的使用欲不够强烈,最近学习node和Angular,需要用js写业务逻辑和数据操作代码的时候这种场景需求就出来了.一般来说事件适合在交互场景中运用,因为用户的行为本来就是分散的,而promise这样的流程控制适合在后台逻辑中处理业务. //j…
为了分摊个人服务器压力.提升图片下载上传的速度,使用七牛云保存用户上传的图片. 后台基于express搭建的,上传使用七牛云第三方nodejs-sdk.由于七牛云上传图片只能单个进行,并且考虑到上传完成后会做一些事情,于是基于sdk再次封装了一次,代码如下: let qn = require('qn'); let path = require('path'); // 本地文件路径 let filePaths = ['./public/images/33.jpg', './public/image…
当我还是一个小白的时候,我翻了很多关于Promise介绍的文档,我一直没能理解所谓解决异步操作的痛点是什么意思 直到我翻了谷歌第一页的所有中文文档我才有所顿悟,其实从他的英文字面意思理解最为简单粗暴 这就是一个承诺,相当于在代码中提供一个在任何时候承诺之后要做什么事的方式,这个承诺可能会兑现也可能无法兑现,当然也可能在兑现的过程中 用这个来替代我们曾经需要写的回调函数,可以避免JavaScript程序中的回调地狱 所以先不去学习的语法,从另一个方式先理解,希望可以帮助你更好的学习或上手Promi…
node.js Web应用框架Express入门指南 作者: 字体:[增加 减小] 类型:转载 时间:2014-05-28 我要评论 这篇文章主要介绍了node.js Web应用框架Express入门指南,从安装到各种技术的应用,都进行了讲解,是一篇不错的Express入门教程,需要的朋友可以参考下 一.安装 复制代码 代码如下: $ npm install express 或者在任何地方使用可执行的 express(1) 安装: 复制代码 代码如下: \# 译注:强烈建议这种方式$ npm i…
第一部分,Promise 加入 ES6 标准 原文地址 http://www.cnblogs.com/wangfupeng1988/p/6515855.html 未经作者允许不得转载! 从 jquery v1.5 发布经过若干时间之后,Promise 终于出现在了 ES6 的标准中,而当下 ES6 也正在被大规模使用. 本节展示的代码参考这里 本节内容概述 写一段传统的异步操作 用Promise进行封装 写一段传统的异步操作 还是拿之前讲 jquery deferred对象时的那段setTime…
IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端 原文:http://docs.identityserver.io/en/release/quickstarts/7_javascript_client.html 目 录 上一篇:IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 下一篇:IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework…
node中非常重要的process对象,Child Process模块Child Process模块http://javascript.ruanyifeng.com/nodejs/child-process.htmlprocess对象http://javascript.ruanyifeng.com/nodejs/process.htmlnode.js入门 - 12.api:进程(process) http://www.cnblogs.com/softlover/archive/2012/10/0…
原作者StevenSLXie; 原链接(https://github.com/StevenSLXie/Tutorials-for-Web-Developers/blob/master/MongoDB%20%E6%9E%81%E7%AE%80%E5%AE%9E%E8%B7%B5%E5%85%A5%E9%97%A8.md); MongoDB 极简实践入门 1. 为什么用MongoDB? 传统的计算机应用大多使用关系型数据库来存储数据,比如大家可能熟悉的MySql, Sqlite等等,它的特点是数据以…
前言 js与生俱来的就是单线程无阻塞的脚本语言. 作为单线程语言,js代码执行时都只有一个主线程执行任务. 无阻塞的实现依赖于我们要谈的事件循环.eventloop的规范是真的苦涩难懂,仅仅要理解的话,不推荐去硬啃. 进程与线程 一直在说js是单线程语言.那么什么是线程呢,对于大部分前端同学来说,可能并不是那么清晰.推荐阮大佬的这篇文章,形象生动 首先,计算机的核心是CPU,它承担了所有的计算任务.它就像一座工厂,时刻在运行. 进程 进程就好比工厂的车间,它代表CPU所能处理的单个任务. 任一时…
node如何捕获异常 node基于js的单线程,有了非阻塞异步回调的概念,但是在处理多个并发连接时,并发环境要求高,最重要的是单线程,单核CPU,一个进程crash则web服务都crash,但是为什么node还这么火?甚至有了Node工程师这个岗,肯定就是node有自己crash之前与之后的解决方法,比如捕获异常 问:nodejs如何捕获异常?答:回调函数中有err形参,console.log出来,这是我之前回答别人问题的答案,但是自从我这几天看了如何捕获异常,才知道捕获异常的精髓就是不要让服务…
在node中,只要涉及到文件IO的场景一般都会涉及到一个类-Stream.Stream是对IO设备的抽象表示,其在JAVA中也有涉及,主要体现在四个类-InputStream.Reader.OutputStream.Writer,其中InputStream和OutputStream类针对字节数据进行读写:Reader和Writer针对字符数据读写.同时Java中有多种针对这四种类型的扩展类,如节点流.缓冲流和转换流等.比较而言,node中Stream类型也和Java中的类似,同样提供了支持字节和…
在大多数的业务中,我们都会有一些需求,例如几秒钟实现网页的跳转,几分钟对于后台数据进行清理,node与javascript都具有将代码延迟一段时间的能力.在node中可以使用三种方式实现定时功能:超时时间,时间间隔和即时定时器.虽然有这三种定时器功能但是在平常的业务中使用还是有差别的,下来我们就一起讨论一下这三种定时器. 1.用超时时间来延迟工作 超时定时器用于将工作延迟一个特定的时间数量,当时间到了,回调函数执行,而定时器会消失.(建议:对于只执行一次的工作,使用超时时间). 1秒之后执行my…
Promise是异步里面的一种解决方案,解决了回调嵌套的问题,es6将其进行了语言标准,同意了用法,提供了`promise`对象, promise对象有三种状态:pending(进行中) .Resolved(已经完成)和Rejected(已失败) ES6规定,Promise对象是一个构造函数,用来生成Promise实例. var promise=new Promise(function(resove,reject){ if (/* 异步操作成功 */){ resolve(value); } el…
前两篇我们讲了ES6中的Promise以及Promise/A+规范,在Promise的知识体系中,jquery当然是必不可少的一环,所以本篇就来讲讲jquery中的Promise,也就是我们所知道的Deferred对象.   事实上,在此之前网上有很多文章在讲jquery Deferred对象了,但是总喜欢把ajax和Deferred混在一起讲,容易把人搞混.when.done.promise.success.error.fail.then.resolve.reject.always这么多方法不…
原文链接:a better way to learn AngularJS - promises AngularJS通过内置的$q服务提供Promise编程模式.通过将异步函数注册到promise对象,Promise编程模式提供一种链式调用异步函数的方式. Promise模式作为ES6规范之一,取得JavaScript原生支持.AngularJS中$q服务提供的接口,非常近似这一新的规范,所以代码移植到ES6版本将会非常容易. 初始化: <html> <head> <title…
Promise定义 Promise是CommonJs的规范之一,包含resolve,reject,done,fail,then等方法,能够帮助我们控制代码的流程,避免函数的多层嵌套.异步在web开发中越来越重要,对于开发人员来说,J非线性执行的编程会让开发者觉得难以掌控,而Promise可以让我们更好地掌控代码的执行流程,jQuery等流行的js库都已经实现了这个对象,现在ES6已经原生实现了Promise. 场景说明: 有时候会遇到这样的情况,需要发两个异步请求,而第二个请求需要用到第一个返回…
promise 是一种用异步方式处理值的方法,promise是对象,代表了一个函数最终可能的返回值或抛出的异常.在与远程对象打交道非常有用,可以把它们看成一个远程对象的代理. 要在Angular中创建promise需要使用内置的$q服务.先用factory定义一个服务,注入$q服务. angular.module('readApp').factory('asyncService', [ "$q", function ($q) { var myAsync=function(flag) {…
javascript的一个不足之处是不能处理二进制数据,于是node中引入了Buffer类型.这个类型以一个字节(即8位)为单位,给数据分配存储空间.它的使用类似于Array,但是与Array又有不同:Buffer在定义的时候必须明确知道其长度,但是Array的长度是可以动态变化的.定义Buffer有三种方式: 1. var buf = new Buffer(3);//指定buffer占用3个字节 2. var buf = new Buffer("hello","utf-8&…
angular中的promise用法 标签(空格分隔): angular 前言 Promise其实是一个规范,用类似then().then()这样的链式调用形式来处理因为异步带来意大利面条式的代码(多层函数嵌套). 多层函数嵌套的原因是,因为js的异步特性,导致我们后面函数需要用到这个异步函数获取的数据或者结果时,必须要等异步函数处理完成.所以必须写在这个异步函数结尾. Angular中的promise:$q Angular把promise封装成了一个服务$q方便我们到处使用它. 当我们用con…
大家都知道在node中Readable Stream有两种模式: flowing mode和non-flowing mode. 对于flowing mode的Readable Stream, 我们是没法控制它何时去读数据读多少的,它会去尽快的去消耗data,并emit出来. // in lib/_stream_readable.js if (state.flowing && state.length === 0 &&!state.sync) { stream.emit('d…
清理8组nodes中表的历史数据,平均每个node中的表有1.5亿条记录,需要根据date_created字段清理8000W数据记录,这个字段没有索引. 环境介绍  线上磁盘空间不足,truncate了许多能动的表,磁盘空间还是占据了87%,我们的nagios报警阀值是80%.所以不断的还会收到email以及短信报警.需要根据时间字段date_created清理,但是在设计之初由于当初的开发人员考虑不足所以date_created字段没有建立索引.另外这些数据可以不用备份,直接删除掉. 问题来了…
javascript中的promise和deferred:实践(二) 介绍: 在第一节呢,我花了大量的时间来介绍promises和deferreds的理论.现在呢,我们来看看jquery中的promises(作者一会儿用单数,一会儿用复数形式,妹的). Note:代码示例将使用jQuery,尽管它偏离了Promise/A 协议. 排序模式: deferred就是一个未完成的对象,promise呢则是一个未知的值.换句话说,prmises/deferreds 允许我们描述(represent)简单…
重回博客,这个帐号之前注册后就只发了一篇博客.听朋友建议,决定一周两次更新. 第一篇谈论一下最近想的比较多的异步的问题. 传统多线程异步 传统的异步是多线程的,当要同时做两件事的时候,他们是执行在不同的线程里的.这就像是柜台卖东西,来了一个人就得找一个员工陪他,直到这个人走了这个员工才能接待下一个客人.店内的员工就像线程池里的空闲线程,空闲的时候可以去接待客人,可是同时只能接待一个人,要接待其他人就得找另外一个人. 电脑里的线程相当于一个员工团队,哪里需要去哪里.多线程的异步好处在于可以更多的占…
使用express+multer实现node中的图片上传 在前端中,我们使用ajax来异步上传图片,使用file-input来上传图片,使用formdata对象来处理图片数据,post到服务器中 在node中使用multer中间件来对上传路由接口进行处理 multer文档 package.json html部分 <body> <div class="form-group"> <label>File input:</label> <i…
使用js的class类简单的实现一个事件监听机制,不同于浏览器中的时间绑定与监听,类似于node中的时间监听,并且会在接下来的文章中去根据自己的理解去写一下Event模块中的原理. Node.js使用了一个事件驱动.非阻塞式I/O的模型,使其轻量又高效.并且Node中的大量模块都使用了Event机制,因此可以说是整个Node中最重要的模块之一. 实例: let event = new eventEmitter(); event.on('someType',function(){ }); even…
  1.Node原生提供的核心模块:http.fs.os.path.url.querystring,Node在加载核心模块时,不需要传入路径,因为Node.js已经将核心模块的文件代码编译到了二进制的可执行文件中了,核心模块在Node中加载的优先级是最高的; 2.以./或者../开始的相对路径文件模块:加载自己写的模块时,最好使用__dirname和模块文件名拼接的方式:以/开始的绝对路径文件模块:在Linux或者MAC的操作系统中,/表示系统的根路径:在Windows中,/表示当前文件模块所属…
1.下载安装包,进行安装: https://www.mongodb.com/download-center/community 参考网址:https://www.cnblogs.com/ymwangel/p/5859453.html 在dos命令界面下进入到: 在 MongoDB的bin目录下启动服务:输入命令: mongod --dbpath 数据文件存放的目录 mongod --dbpath D:\examples\mongodb\data\db https://www.cnblogs.co…
IdentityServer4 中文文档 -16- (快速入门)使用 EntityFramework Core 存储配置数据 原文:http://docs.identityserver.io/en/release/quickstarts/8_entity_framework.html 目 录 上一篇:IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端 IdentityServer 是为可扩展性设计的,其中一个扩展点是其所需数据的存储机制.该快速入门…
IdentityServer4 中文文档 -14- (快速入门)使用 ASP.NET Core Identity 原文:http://docs.identityserver.io/en/release/quickstarts/6_aspnet_identity.html 目 录 上一篇:IdentityServer4 中文文档 -13- (快速入门)切换到混合流并添加 API 访问 下一篇:IdentityServer4 中文文档 -15- (快速入门)添加 JavaScript 客户端 Ide…