最近做工程遇到一个问题:从数据库取出数据后不能有效的传到前台,用了两种解决办法callback回掉函数和promise方法,这里说一下自己对promise的理解。
promise主要用于控制函数按照自己的计划进行下去,以免造成有操作等延迟时不能得到想要的结果。
常见用法一:
var mysql = require("./db"); function Person(){ } Person.getAll = function() { return new Promise(function (resolve,reject) { mysql.query('select*from person', function (err, rows) { resolve(rows); }) }) }; module.exports = Person;
Person = require('../models/Person.js'); function NameController(){ } NameController.getAll = function(req,res){ Person.getAll() .then(function(list){ res.send(list) }) }; module.exports = NameController;
这是两个js文件,通过路由连接到一起,实现了由promise控制取数据。主要需要注意的是第一个函数return和resolve的内容还有第二个函数Person.getAll()的承接,括号不要落掉。
补充:可以后续链接多个.then,函数会按照顺序执行
.catch是承接出错时的操作的。
常见用法二:Promise.all
OrderFormController.get_person_list = function(){ return new Promise(function(resolve,reject){ Person.getAll() .then(function(name){ resolve(name); }) .catch(function(error){ console.log("get_person_list error") }) }); }; OrderFormController.get_order_list = function(){ return new Promise(function(resolve,reject){ OrderForm.statics.getAll() .then(function(list){ resolve(list); }) .catch(function(error){ console.log("get_order_list error") }) }); }; OrderFormController.getAll = function(req,res){ var get_person_list = OrderFormController.get_person_list(); var get_order_list = OrderFormController.get_order_list(); Promise.all([get_person_list,get_order_list]) .then(function(order_information){ res.send(order_information) }); };
这儿promise.all用于有多个promise同时完成时才能进行下一步的情况,多个函数取出的值会自动被整合到一个数组中,我的代码是整合到了order_infomation中,其中order_infomation[0]是第一个,order_infomation[1]是第二个。
node.js4.0以上版本就自带promise了,不用引用
相关推荐
5. **异步/同步API**:Git-js提供了异步和同步两种API,适应不同的场景需求,开发者可以根据实际情况选择合适的方式。 ### 使用Git-js的步骤 1. **安装**:通过npm(Node.js包管理器)安装Git-js,命令行输入`npm ...
1. **Node.js**: Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,允许开发者在服务器端使用JavaScript编写高性能的应用程序。 2. **SQLite3**: SQLite3是一种开源的、无服务器、零配置、事务性的SQL数据库...
本章将探讨异步编程的概念,包括回调函数、Promise 和 async/await 的使用方法。 #### 八、如何使用 Mocha 和 Assert 测试 Node.js 模块 随着项目规模的增长,编写测试变得尤为重要。Mocha 是一个流行的测试框架,...
Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行开发,打破了JavaScript只能在浏览器端使用的限制。这个压缩包“Node.js.zip”包含了两本非常重要的学习资源——...
在IT行业中,Node.js和Python是两种非常流行的编程语言,分别在不同的领域有着广泛的应用。Node.js以其非阻塞I/O模型和JavaScript的便捷性在Web开发中占据了一席之地,而Python则以其强大的科学计算、数据分析以及...
Node.js作为一款流行且广泛使用的服务器端JavaScript运行环境,其核心思想和架构设计对开发者而言至关重要。本文将从Node.js的架构设计、核心模块实现、以及源码分析等层面进行深入探讨。 首先,我们需要了解Node....
Tick Processor 是 Node.js 中的一种性能优化技术,能够帮助开发者更好地了解程序的性能瓶颈。Tick Processor 分为两个部分:事件驱动和 Tick 处理器。事件驱动负责将事件分配给对应的处理器,而 Tick 处理器则负责...
Vue.js和Node.js是两种非常流行的开源技术,广泛应用于现代Web开发。Vue.js是一个轻量级的前端JavaScript框架,而Node.js则是一个基于Chrome V8引擎的JavaScript运行环境,常用于构建后端服务。这份“vue.js+node.js...
在Node.js开发中,Promise是处理异步操作的重要工具,特别是在最新的技术栈中。Promise的引入解决了回调地狱问题,使得代码更加清晰、可读性更强。本文将详细讲解Promise/A+规范及其在Node.js中的应用。 首先,让...
总的来说,Node.js使用手册涵盖了Node.js的核心概念、API使用方法以及最佳实践,无论你是初学者还是有经验的开发者,都能从中受益。通过深入学习和实践,你可以利用Node.js开发高性能的Web应用、实时通信系统、工具...
异步方法使用Promise,这在处理可能耗时的文件操作时非常重要,因为它不会阻塞Node.js事件循环。 3. **安全删除**: `del`库确保了删除操作的安全性。它会在执行删除前检查路径,防止误删。此外,它还提供` dryRun`...
在这个“mysql和node.js整合学习”资料中,我们将探讨如何将这两种技术结合,特别是在使用ORM(对象关系映射)框架时的方法。 ORM框架允许开发者使用面向对象的编程方式来操作数据库,而无需直接编写SQL语句。它在...
在本文中,我们将深入探讨如何使用Node.js创建一个超级简单的任务Runner,该Runner基于复合函数和Promise链。这个任务Runner的目的是帮助开发者更高效地组织和执行一系列异步操作,这是Node.js开发中的常见需求。在...
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地推动了全栈开发的进程。本案例聚焦于 Node.js 的实际应用,通过源码下载,我们可以深入理解其...
2. **异步与同步操作**:FTPFS支持异步和同步两种操作模式,通过在方法后添加`Sync`(如`readdirSync`)来执行同步操作,或者使用回调函数或Promise(对于ES6以上版本)进行异步操作。 3. **流式处理**:FTPFS也...
这两种算法都是网络流量整形和拥塞控制中的常见方法。 7. **使用示例**:通常,开发者会创建一个限速器实例,设置每秒或每分钟允许的请求数量,然后在处理每个请求之前调用限速器的方法。如果请求被允许,该方法会...
实际上,很多现代的Node.js模块都支持使用回调函数和Promise两种方式来处理异步操作。例如,在fs模块中,除了可以使用fs.readFile这样的回调风格函数外,还可以使用fs.promises命名空间下的方法来以Promise的方式...
Node.js作为一个基于Chrome V8引擎的JavaScript运行环境,以其异步、非阻塞I/O模型和高性能特性,在Web开发领域占据了一席之地。本篇文章将深入探讨如何利用Node.js进行网络爬虫的开发,以"HealthyManAndComic"项目...
JavaScript Generators 是 JavaScript 语言中的一种特性,它们在 Node.js 中尤其有用,因为它们能够帮助开发者处理复杂的异步流程控制。Generator 函数是一种特殊的函数,它们可以暂停执行并在稍后恢复,这使得它们...
在Node.js中发起HTTP请求是Web开发中一项基本而重要的技能,这篇文章介绍了五种在Node.js环境下发起HTTP请求的方法,这些方法不仅涵盖了Node.js内置模块,还包括了流行第三方库的使用方式。 首先,标准库中的HTTP...