javascript使用Promise对象实现异步编程


Posted in Javascript onMarch 01, 2016

Promise对象是CommonJS工作组为异步编程提供的统一接口,是ECMAScript6中提供了对Promise的原生支持,Promise就是在未来发生的事情,使用Promise可以避免回调函数的层层嵌套,还提供了规范更加容易的对异步操作进行控制。提供了reject,resolve,then和catch等方法。

使用PROMISE

Promise是ES6之后原生的对象,我们只需要实例化Promise对象就可以直接使用。
实例化Promise:

var promise = new Promise(function (resolve, reject) {
  console.log('begin do something');
  if (Math.random() * 10.0 > 5) {
    console.log(" run success");
    resolve();
  } else {
    console.log(" run failed");
    reject();

  }
});

这里定义了一个回调方法function(resolve,reject),如果成功了就调用resolve,失败了就会调用reject。
Promise.prototype.then是Promise执行完之后的回调,可以用then方法分别指定resolve和reject的回调。

promise.then(function () {
  console.log(' resolve from promise');
}, function () {
  console.log(' reject from promise');
});

执行结果一:

begin do something
 run success
 resolve from promise

执行结果二:

begin do something
 run failed
 reject from promise

使用PROMISE进行网络请求

getRequest = function (url) {
  var promise = new Promise(function (resolve, reject) {
    var request = require('request');
    request(url, function (error, respones, body) {
      if (error) {
        reject(error);
        return;
      }
      if (respones.statusCode == 200) {
        resolve(body)

      } else {
        reject(respones.status);

      }
    });
  });
  return promise;

};

getRequest("https://github.com/").then(function (result) {
  console.log(result);
}, function (error) {
  console.error('error', error);
});

使用Promise进行网络请求,也可以使用Promise在浏览上实现Ajax请求。

代码地址:https://github.com/jjz/node

Javascript 相关文章推荐
jQuery1.4.2与老版本json格式兼容的解决方法
Feb 12 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
Apr 28 Javascript
IE浏览器下PNG相关功能
Jul 05 Javascript
js+css实现有立体感的按钮式文字竖排菜单效果
Sep 01 Javascript
深入理解js函数的作用域与this指向
May 28 Javascript
JS使用正则表达式实现关键字替换加粗功能示例
Aug 03 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
Nov 21 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
JS模拟实现哈希表及应用详解
May 04 Javascript
mac上配置Android环境变量的方法
Jul 08 Javascript
vue中导出Excel表格的实现代码
Oct 18 Javascript
vuex存取值和映射函数使用说明
Jul 24 Javascript
javascript html5实现表单验证
Mar 01 #Javascript
javascript中FOREACH数组方法使用示例
Mar 01 #Javascript
JS实现Select的option上下移动的方法
Mar 01 #Javascript
angular2使用简单介绍
Mar 01 #Javascript
JS实现的在线调色板实例(附demo源码下载)
Mar 01 #Javascript
Bootstrap每天必学之导航条(二)
Mar 01 #Javascript
JavaScript实现简洁的俄罗斯方块完整实例
Mar 01 #Javascript
You might like
Session的工作方式
2006/10/09 PHP
说明的比较细的php 正则学习实例
2008/07/30 PHP
php常用的url处理函数总结
2014/11/19 PHP
php实现高效获取图片尺寸的方法
2014/12/12 PHP
ECMAScript 基础知识
2007/06/29 Javascript
EasyUi tabs的高度与宽度根据IE窗口的变化自适应代码
2010/10/26 Javascript
js页面跳转常用的几种方式
2010/11/25 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
JS实现的不规则TAB选项卡效果代码
2015/09/18 Javascript
jQuery+AJAX实现遮罩层登录验证界面(附源码)
2020/09/13 Javascript
angular和BootStrap3实现购物车功能
2017/01/25 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
nodejs异步编程基础之回调函数用法分析
2018/12/26 NodeJs
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
python编程开发之日期操作实例分析
2015/11/13 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
Flask框架请求钩子与request请求对象用法实例分析
2019/11/07 Python
python基于property()函数定义属性
2020/01/22 Python
Python定时器线程池原理详解
2020/02/26 Python
一篇文章带你搞定Ubuntu中打开Pycharm总是卡顿崩溃
2020/11/02 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
瑞士网球商店:Tennis-Point
2020/03/12 全球购物
如何进行Linux分区优化
2016/09/13 面试题
ShellScript面试题一则-ShellScript编程
2014/06/24 面试题
白酒市场开发计划书
2014/01/09 职场文书
单位领导证婚词
2014/01/14 职场文书
个人投资计划书
2014/05/01 职场文书
人大调研汇报材料
2014/08/14 职场文书
普通党员四风问题对照检查材料
2014/09/27 职场文书
大学生操行评语大全
2014/12/31 职场文书
干部理论学习心得体会
2016/01/21 职场文书
python操作xlsx格式文件并读取
2021/06/02 Python
Python爬虫框架之Scrapy中Spider的用法
2021/06/28 Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
2021/06/29 Python
Python实现滑雪小游戏
2021/09/25 Python