使用方法
在package.json中加入
'promise':"*"执行 npm install 加载 promise 模块
在需要的文件中引入模块
var Promise = require("promise");例子
function insertPracticeForGraphics (){ var self = this; return new Promise(function (resolve) { var newPractice = new Practice(practice); newPractice.save(function () { console.log("save practice success"); resolve(newPractice._id);//执行成功后返回值,只 }); } insertPracticeForGraphics() .then(function(newPractieId){ // @1 })
resolve(newPractice._id);//执行成功后返回值,如果有多个值的话,可以返回一个对象
当insertPracticeForGraphics 执行完成后,只执行@1 newPractieId 为 insertPracticeForGraphice返回值
如果函数3之前需要函数1、2执行完成后执行,且函数1、2的执行先后顺序没有要求可以这样控制
function Course() { } Course.prototype = { start: function() { var assignInfo = ['path_0','path_1','path_2'] var promises = []; var self = this; _(assignInfo).each(function(item) { var promise = self.updateCoursesAttrOnPath(item); promises.push(promise); }); return Promise.all(promises); }, updateCoursesAttrOnPath: function (item) { Path.update({id_name: item.id_name},{$set:{:courses:item.courses}}}, function (err) { if (err) { throw err; } resolve(item.courses); } } var course = new Course() course.start() .then(function(data_0,data_1,data_2){ //@2 })
当执行start时回执行3次updateCoursesAttrOnPath,传入参数分别为'path_0','path_1','path_2',
他们执行完的顺序不确定,但是他们执行完返回的值顺序固定分别对应 data_0,data_1,data_2;start执行完成后执行@2
相关推荐
node-mysql-promise 修复异步查询bug版本 Install $ npm i -D git+https://github.com/gofancyever/node-mysql-promise.git Introduction node mysql操作封装类,基于promise,借鉴75team开源项目thinkjs中model操作...
关于node.js的异步心得**第一种 使用回调函数**第二种 使用Promise第三种还有可以使用**async**函数和**await**关键字cnst fn =async()=>{} 最近刚刚学了node.js 异步篇 先说一下异步的处理流程 下面用代码解释...
承诺电话安装 npm i promise-call用法 var pcall = require('promise-call');pcall(fs.readfile, filename) .then(function(content) { }) .catch(function(error) { });
本文实例讲述了node.js Promise对象的使用方法。分享给大家供大家参考,具体如下: Promise对象是干嘛用的? 将异步操作以同步操作的流程表达出来 一、Promise对象的定义 let flag = true; const hello = new ...
本文介绍了Node异步编程,分享给大家,具体如下: 目前的异步编程主要解决方案有: 事件发布/订阅模式 Promise/Deferred模式 流程控制库 事件发布/订阅模式 Node自身提供了events模块,可以轻松实现事件的发布/...
Promise在异步行为和接口之间提供了明确的关注点分离,因此可以在不使用回调的情况下调用异步函数,并且可以在通用的Promise接口上完成回调交互。 node-promise包仅提供一个promise实现,但是,建议使用以获得更...
在写Node.js的过程中,连续的IO操作可能会导致“金字塔噩梦”,回调函数的多重嵌套让代码变的难以维护,利用CommonJs的Promise来封装异步函数,使用统一的链式API来摆脱多重回调的噩梦。 Node.js提供的非阻塞IO...
业内为了处理异步操作问题也是拼了,什么async,q,bluebird,co,处理方式不同,各有千秋,感兴趣可以了解一下,但是惊喜的发现nodejs 7.6已经默认支持ES7中的 async/await 了,结合ES6中的 promise对象,用起来...
使用Promise编写异步代码时,使用reject来处理错误。有时,开发者通常会忽略这一点,导致一些错误没有得到处理。例如: function main() { asyncFunc() .then(···) .then(() => console.log('Done!')); } 由于...
js代码-实现一个简单的Node.js的Web框架利用Promise处理异步中间件
Promise 为开发者提供了一套与异步调用结果交互的机制。 可通过以下方式加载该支持库: 若执行环境未提供对 Promise 的原生支持,可以以脚本的形式来充当原生 API。脚本会添加一个全局的 Promise 构造...
比起回调函数,使用 Promise 来处理异步错误要显得优雅许多。 结合 Express 内置的错误处理机制和 Promise 极大地降低产生未捕获错误(uncaught exception)的可能性。 Promise 在ES6中是默认选项。如果使用 Babel ...
关于啥是promise以及promise解决的是啥问题,敬请体验node的回调异步编码大法,顺带移步http://wiki.commonjs.org/wiki/Promises/A 看看是咋定义的,在此不再赘述。 这里我们看看怎么用q.js 实现node api的promise。...
前端有AJAX,setTimeout等,后端Node异步更多。按照传统的做法,那么就是各种回调嵌回调。代码可以把人绕晕。 这个时候,CommonJS社区提出了一个叫做Promise/A+的规范,这个规范定义了如何书写异步代码,包括使用...
在使用 mysql 模块时,开发者们可以采用回调函数或 Promise 等方式来编写异步代码,从而充分利用 Node.js 的异步编程特性,提高代码的执行效率和并发性能。另外,还可以通过连接池等工具库来优化和管理数据库连接,...
节点树视图节点的异步文件系统树视图。Javascript(快速启动)用法const { TreeView } = require ( 'node-treeview' ) ;// Using callbacknew TreeView ( options ) . process ( path , ( error , tree ) => { if ( ...
节点表达异步通过将未处理的异步中间件错误发送给next()函数来自动处理它们。 这样,您就不需要了,也不会忘记尝试捕获所有中间件以进行默认错误处理。用法您只需要按应用程序一次(仅)请求模块即可,例如在app....
Node.js 采用了与通常 Web 上的 JavaScript 异步编程的方式来处理会造成阻塞的I/O操作。在 Node.js 中读取文件、访问数据库、网络请求等等都有可能是异步的。对于 Node.js 新人或者从其他语言背景迁移到 Node.js 上...
1. 回调函数Callbacks 1. 异步JavaScript 1. 成器Generators/ yield 1. 每个操作都返回样的promise对象,保证