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 不只是脚本
May 30 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
Mar 31 Javascript
jquery实现div拖拽宽度示例代码
Jul 31 Javascript
ie与ff下的event事件使用介绍
Nov 25 Javascript
使用原生js写的一个简单slider
Apr 29 Javascript
JavaScript 学习笔记之操作符(续)
Jan 14 Javascript
JS动态插入并立即执行回调函数的方法
Apr 21 Javascript
Jq通过td获取同行其它列td的方法
Oct 05 Javascript
vue.js实现仿原生ios时间选择组件实例代码
Dec 21 Javascript
JS实现百度搜索框关键字推荐
Feb 17 Javascript
JavaScript实现密码强度实时验证
Mar 18 Javascript
React Native登录之指纹登录篇的示例代码
Nov 03 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导入Excel到MySQL的方法
2011/04/23 PHP
Yii2实现增删改查后留在当前页的方法详解
2017/01/13 PHP
Smarty3配置及入门语法
2017/02/22 PHP
php慢查询日志和错误日志使用详解
2021/02/27 PHP
一直复略了的一个问题,关于表单重复提交
2007/02/15 Javascript
一段多浏览器的"复制到剪贴板"javascript代码
2007/03/27 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
2014/01/14 Javascript
jQuery DOM操作实例
2014/03/05 Javascript
js 动态修改css文件用到了cssRule
2014/08/20 Javascript
Javascript中Array.prototype.map()详解
2014/10/22 Javascript
jquery+ajax验证不通过也提交表单问题处理
2014/12/12 Javascript
JS点击链接后慢慢展开隐藏着图片的方法
2015/02/17 Javascript
js实现div层缓慢收缩与展开的方法
2015/05/11 Javascript
js实现向右横向滑出的二级菜单效果
2015/08/27 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
javascript检测移动设备横竖屏
2016/05/21 Javascript
微信小程序 loading(加载中提示框)实例
2016/10/28 Javascript
js获取地址栏参数的两种方法
2017/06/27 Javascript
Vue filters过滤器的使用方法
2017/07/14 Javascript
vue2.0使用swiper组件实现轮播的示例代码
2018/03/03 Javascript
Vue项目页面跳转时浏览器窗口上方显示进度条功能
2020/03/26 Javascript
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
Django给admin添加Action的步骤详解
2019/05/01 Python
在python中实现求输出1-3+5-7+9-......101的和
2020/04/02 Python
Python系统公网私网流量监控实现流程
2020/11/23 Python
python爬虫中url管理器去重操作实例
2020/11/30 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
美国存储和组织商店:The Container Store
2017/08/16 全球购物
商务英语本科生的自我评价分享
2013/11/15 职场文书
开会迟到检讨书
2014/01/08 职场文书
大学生表扬信范文
2014/01/09 职场文书
党支部鉴定意见
2015/06/02 职场文书
基于Python实现对比Exce的工具
2022/04/07 Python
Android开发实现极为简单的QQ登录页面
2022/04/24 Java/Android