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的各种节点操作实例演示代码
Jun 27 Javascript
jQuery函数map()和each()介绍及异同点分析
Nov 08 Javascript
jQuery中ready事件用法实例
Jan 19 Javascript
Javascript中的作用域和上下文深入理解
Jul 03 Javascript
js实现的下拉框二级联动效果
Apr 30 Javascript
js实现下一页页码效果
Mar 07 Javascript
Thinkphp5微信小程序获取用户信息接口的实例详解
Sep 26 Javascript
微信开发之企业付款到银行卡接口开发的示例代码
Sep 18 Javascript
Vue.js 中的实用工具方法【推荐】
Jul 04 Javascript
layui操作列按钮个数和文字颜色的判断实例
Sep 11 Javascript
Vue解析带html标签的字符串为dom的实例
Nov 13 Javascript
详解Vue slot插槽
Nov 20 Vue.js
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 数组遍历顺序理解
2009/09/09 PHP
php与c 实现按行读取文件实例代码
2017/01/03 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
网页中的图片的处理方法与代码
2009/11/26 Javascript
jquery任意位置浮动固定层插件用法实例
2015/05/29 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
JavaScript如何实现跨域请求
2016/08/05 Javascript
pc加载更多功能和移动端下拉刷新加载数据
2016/11/07 Javascript
Vue中的scoped实现原理及穿透方法
2018/05/15 Javascript
vue-cli2打包前和打包后的css前缀不一致的问题解决
2018/08/24 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
2018/09/18 Javascript
基于JS开发微信网页录音功能的实例代码
2019/04/30 Javascript
Vue基础学习之项目整合及优化
2019/06/02 Javascript
layui 实现加载动画以及非真实加载进度的方法
2019/09/23 Javascript
vue 子组件和父组件传值的示例
2020/09/11 Javascript
[47:38]Optic vs VGJ.S 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
在Django中同时使用多个配置文件的方法
2015/07/22 Python
Python基础学习之常见的内建函数整理
2017/09/06 Python
Python实现的排列组合计算操作示例
2017/10/13 Python
python 重定向获取真实url的方法
2018/05/11 Python
Django使用list对单个或者多个字段求values值实例
2020/03/31 Python
Python参数传递对象的引用原理解析
2020/05/22 Python
Python xml、字典、json、类四种数据类型如何实现互相转换
2020/05/27 Python
浅析Python面向对象编程
2020/07/10 Python
python爬虫 requests-html的使用
2020/11/30 Python
Python OpenCV中的numpy与图像类型转换操作
2020/12/11 Python
Python实现Word文档转换Markdown的示例
2020/12/22 Python
Shopee印度尼西亚:东南亚与台湾市场最大电商平台
2018/06/17 全球购物
计算机数据库专业职业生涯规划书
2014/02/08 职场文书
爱牙日宣传活动总结
2015/02/05 职场文书
微信小程序实现拍照和相册选取图片
2021/05/09 Javascript
javascript遍历对象的五种方式实例代码
2021/10/24 Javascript
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
在Docker容器中部署SQL Server
2022/04/11 Servers
Python查找算法的实现 (线性、二分,分块、插值查找算法)
2022/04/24 Python