Node.js用ES6原生Promise对异步函数进行封装
2016-08-19 16:37
411 查看
Promise的概念
Promise 对象用于异步(asynchronous)计算.。一个Promise对象代表着一个还未完成,但预期将来会完成的操作。Promise的几种状态:
pending:初始状态,即等待操作的执行
fulfilled:成功的操作
rejected:失败的操作
pending的状态既可以转为fulfilled,也可以转为rejected,当状态发生改变时,promise.then(onFulfilled, onRejected)方法将被调用
Promise的基本用法
1.首先创建一个Promise的实例var promise = new Promise(function(resolve, reject){ //do something if(success){ resolve(value); } else { reject(value); } });
构造函数的参数Function中带有两个函数对象resolve和reject,二者都是返回一个Promise对象
resolve用在处理执行成功的场景,Promise从pending转为fulfilled状态时调用
reject用在处理执行失败的场景,Promise从pending转为rejected状态时调用
2.调用then()方法
promise.then(function(value){ //成功时调用 }, function(value){ //失败时调用 });
用Promise来封装异步函数
Node.js中的IO操作都是异步的,因此在写异步程序的过程中容易掉进回调大坑知道了Promise的基本调用过程,我们就可以用来封装异步的函数了
1.定义函数
function sendRequest(){ return new Promise(function(resolve, reject){ var req = http.request(options, function(res){ var data = ''; res.on('data', function(chunk){ data += chunk; }); res.on('end', function(){ //成功后调用 resolve(data); }); }); req.on('error', function(err){ //失败后调用 reject(err); }); req.end(); }); }
2.调用函数
sendRequest().then(function(data){ console.log(data); }).catch(function(err){ console.log(err); });
参考
Promise - JavaScript | MDN使用 Promise 封装 FileReader
相关文章推荐
- Node.js用ES6原生Promise对异步函数进行封装
- node.js中函数的两种封装方式
- Node.js中的异步I/O是如何进行的?
- node.js中函数的两种封装方式
- Node.js 7.9.0 异步函数
- node.js如何获取request模块中异步函数回调的返回值
- node.js 简单的异步文件遍历函数
- 使用 node.js 进行服务器端 JavaScript 编程
- js对文字进行编码涉及3个函数
- 关于对js从服务器端取到的值进行函数调用的总结
- 为了方便移植而对系统函数进行封装
- JS里的prototype对JS类(方法,函数,function)进行一个扩展吧!
- js 框中字符数提示 ajax异步请求函数可能出错点
- AJAX异步请求函数的封装及示例
- 使用 node.js 进行服务器端 JavaScript 编程
- 理解Node.js异步非阻塞I/O模型
- JS和HTML分离:注册事件的方法进行封装
- AJAX异步请求函数的封装及示例
- 晒几条自个封装的js函数,欢迎拍砖。
- 用js进行url编码后用php反解以及用php实现js的escape功能函数总结