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 相关文章推荐
javascript中字符串替换函数replace()方法与c# 、vb 替换有一点不同
Jun 25 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
Bootstrap警告框(Alert)插件使用方法
Mar 21 Javascript
关于在vue-cli中使用微信自动登录和分享的实例
Jun 22 Javascript
JS获取填报扩展单元格控件的值的解决办法
Jul 14 Javascript
node.js学习之断言assert的使用示例
Sep 28 Javascript
微信小程序使用image组件显示图片的方法【附源码下载】
Dec 08 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
Jul 04 Javascript
ES6入门教程之let、const的使用方法
Apr 13 Javascript
微信小程序实现折线图的示例代码
Jun 07 Javascript
Vue关于组件化开发知识点详解
May 13 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
浅析php header 跳转
2013/06/17 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
2013/08/08 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
使用JavaScript创建新样式表和新样式规则
2016/06/14 PHP
php简单读取.vcf格式文件的方法示例
2017/09/02 PHP
php和html的区别点详细总结
2019/09/24 PHP
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
JavaScript QueryString解析类代码
2010/01/17 Javascript
JavaScript中实现异步编程模式的4种方法
2014/09/24 Javascript
JavaScript sup方法入门实例(把字符串显示为上标)
2014/10/20 Javascript
jQuery实现的五子棋游戏实例
2015/06/13 Javascript
javascript 动态修改css样式方法汇总(四种方法)
2015/08/27 Javascript
jquery中表单 多选框的一种巧妙写法
2015/09/06 Javascript
Vue2学习笔记之请求数据交互vue-resource
2017/02/23 Javascript
vue2路由基本用法实例分析
2020/03/06 Javascript
Python实现的三层BP神经网络算法示例
2018/02/07 Python
Flask实现跨域请求的处理方法
2018/09/27 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
python控制nao机器人身体动作实例详解
2019/04/29 Python
python爬虫 execjs安装配置及使用
2019/07/30 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python numpy库np.percentile用法说明
2020/06/08 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
2020/10/20 Python
世界上最大的汽车共享网站:Zipcar
2017/01/14 全球购物
Ajax的工作原理
2015/12/04 面试题
自荐信的禁忌和要点
2013/10/15 职场文书
大学生自荐信
2013/12/11 职场文书
新任教师自我鉴定
2014/02/24 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
工厂采购员岗位职责
2015/04/07 职场文书
工会文体活动总结
2015/05/07 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
彻底解决MySQL使用中文乱码的方法
2022/01/22 MySQL
java实现web实时消息推送的七种方案
2022/07/23 Java/Android
SpringBoot Http远程调用的方法
2022/08/14 Java/Android