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 相关文章推荐
jQuery 源码分析笔记(5) jQuery.support
Jun 19 Javascript
文本框输入时 实现自动提示(像百度、google一样)
Apr 05 Javascript
调试Javascript代码(浏览器F12及VS中debugger关键字)
Jan 25 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
JQuery 实现在同一页面锚点链接之间的平滑滚动
Oct 29 Javascript
使用struts2+Ajax+jquery验证用户名是否已被注册
Mar 22 Javascript
js输出数据精确到小数点后n位代码
Jul 02 Javascript
JavaScript制作简单分页插件
Sep 11 Javascript
JS实现css hover操作的方法示例
Apr 07 Javascript
Vue2.x中利用@font-size引入字体图标报错的解决方法
Sep 28 Javascript
vue写h5页面的方法总结
Feb 12 Javascript
使用eslint和githooks统一前端风格的技巧
Jul 29 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创建Cookie数组的详解
2013/07/03 PHP
php教程之phpize使用方法
2014/02/12 PHP
php中实现xml与mysql数据相互转换的方法
2014/12/25 PHP
php 从一个数组中随机的取出若干个不同的数实例
2016/12/31 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
OfflineSave离线保存代码再次发布使用说明
2007/05/23 Javascript
nodejs npm包管理的配置方法及常用命令介绍
2014/06/05 NodeJs
实现非常简单的js双向数据绑定
2015/11/06 Javascript
DIV随滚动条滚动而滚动的实现代码【推荐】
2016/04/12 Javascript
jQuery实现的导航下拉菜单效果示例
2016/09/05 Javascript
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
javaScript 事件绑定、事件冒泡、事件捕获和事件执行顺序整理总结
2016/10/10 Javascript
js复制内容到剪贴板代码,js复制代码的简单实例
2016/10/27 Javascript
JavaScript生成.xls文件的代码
2016/12/22 Javascript
详解Vue监听数据变化原理
2017/03/08 Javascript
JavaScript实现购物车基本功能
2017/07/21 Javascript
删除table表格行的实例讲解
2017/09/21 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
Sanic框架蓝图用法实例分析
2018/07/17 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
python实现银行实战系统
2020/02/26 Python
Annoushka英国官网:英国奢侈珠宝品牌
2018/10/20 全球购物
印度手工编织服装和家居用品商店:Fabindi
2019/10/07 全球购物
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
运动会入场式解说词
2014/02/18 职场文书
初中高效课堂实施方案
2014/02/26 职场文书
电子商务专业求职信
2014/03/08 职场文书
条幅标语大全
2014/06/20 职场文书
财务会计专业自荐书
2014/06/30 职场文书
毕业生找工作求职信
2014/08/05 职场文书
2014年团支部年度工作总结
2014/12/24 职场文书
班主任工作实习计划
2015/01/16 职场文书
团支部书记竞选稿
2015/11/21 职场文书
导游词之江苏同里古镇
2019/11/18 职场文书