promise的简单使用
var p = new Promise(function (resolve,reject) {
/*setTimeout(function () {
resolve('success')
},3000);
setTimeout(function () {
reject('fail')
},2000);*/
// resolve(123);
// reject(123);
ajax({
type:'get',
url:'./2.json',
success:resolve,// success && success(data)
success:function(data){
// data[19] = 1233;
resolve(data);
},
error:reject
})
});
var p2 = p.then((data)=>{
console.log(data);
throw new Error('失败了');
console.log(2);
// console.log(this);
// return data;
},(res)=>{
console.log(res);
return 'success';
});
p2.then(function (data) {
console.log('p2suc',data);
if(Math.random() > 0.5){
throw new Error('大于0.5;是个失败')
}
return 'then3 success'
},function (res) {
console.log('p2fail',res);
}).then(data=>{
console.log(data);
},res=>{
console.log(res);
});
// console.dir(p2);
/*
* Promise 是原生 JS 的一个类;为了解决JS中异步的问题;
* Promise 接受一个参数;这个参数是个回调函数;
* 这个回调函数接收两个参数;
* 第一个参数是用来异步执行成功之后执行的回调函数
* 第二个参数是用来异步执行失败之后执行的回调函数
* 两个回调函数执行只能其中的一个;只要其中一个执行了;那么另一个就不在执行;
* 让成功或者失败函数执行是由自己的代码逻辑决定的;
*
* then 是Promise 原型上的函数 ;他接收两个函数作为参数;
* 第一个函数是个成功的回调,第二个函数是个失败的回调;
* then 返回的是一个新的Promise实例
*
*
* 后边的then执行成功函数或者失败函数,只跟上个then中函数执行的结果有关系;若上个then中函数(不论是成功函数或者失败函数)执行成功;则走下个then的成功函数;执行失败,就走下个then 的失败函数
* 后边的then中的函数接收的参数是上个then中函数执行完的返回结果;
*
*
*
* Promise的实例有三种状态 pending resolved rejected
* pending ---> 实例创建完成时就是个pending;
* resolve执行后 ---> resolved
* reject执行后 ---> rejected
* */
promise的简单使用的更多相关文章
- Promise的简单用法
众所周知的,Javascript是一种单线程的语言,所有的代码必须按照所谓的“自上而下”的顺序来执行.本特性带来的问题就是,一些将来的.未知的操作,必须异步实现.本文将讨论一个比较常见的异步解决方案— ...
- Promise原理 && 简单实现
Promise原理 参考https://github.com/chunpu/promise/blob/master/promise.js 个人认为原博的实现有点问题 在next函数的实现上, 会导致无 ...
- Q promise API简单翻译
详细API:https://github.com/kriskowal/q/wiki/API-Reference Q提供了promise的一种实现方式,现在在node中用的已经比较多了.因为没有中文的a ...
- Javascript中Promise的简单使用
// 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数:如果是偶数则做一件事情,如果是奇数则做另一件事情 function doSomthing() { var promise = ...
- ES6 学习笔记(十三)promise的简单使用
1.什么是promise 在JavaScript中,我们经常会用到回调函数,而回调函数的使用让我们没法使用return,throw等关键字.JS引用promise正好解决了这个问题. promise单 ...
- es6 promise 简单总结
话不多说,直捣主题. promise用途:异步编程的一种解决方案. 优点:比传统的解决方案——回调函数和事件——更合理和更强大. 三种状态:pending(进行中).fulfilled(已成功)和re ...
- ES6深入学习记录(二)promise对象相关
1.Promise的含义 Promise是异步编程的一种解决方案,比传统的解决方案--回调函数和事件更合理和强大.ES6将其写进了语言标准,统一了用法,原生提供了promise对象. 所谓Promis ...
- 细嗅Promise
读完这篇文章,预计会消耗你 40 分钟的时间. Ajax 出现的时候,刮来了一阵异步之风,现在 Nodejs 火爆,又一阵异步狂风刮了过来.需求是越来越苛刻,用户对性能的要求也是越来越高,随之而来的是 ...
- Deferred在jQuery和Angular中的使用与简单实现
Deferred在jQuery和Angular中的使用与简单实现 Deferred是在jQuery1.5版本中加入的,并且jQuery使用它完全重写了AJax,以前也只是偶尔使用.但是上次在使用Ang ...
随机推荐
- Pascal之计算小系统
program Project16; {$APPTYPE CONSOLE} VAR n,i,k,score,b,a:integer; answer,c:real; ch:char; Begin rep ...
- Windows NT/NTLM 加密
Hash,一般翻译为“散列”,也有直接音译为“哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值.这种转换是一种压缩映射,也就是散 ...
- angularJs 之deferred
angularJs 对promise的封装 var deferred = $q.defer(); deferred.promise.then(function(){ var result = {} c ...
- 微信小程序中如何使用setData --- 修改数组对象、修改对象
看代码吧~ 这是修改对象 this.setData({ allStageIndex: e.detail.value, [`projectDetailsData.stage`]: this.data.a ...
- LoadRunner_11破解教程完整版
2017.12.17更正 qtm的LR11,如果是win10版本的电脑而且ie浏览器是11以上的请到loadrunner官网下载社区免费版,支持google,firefox,edge,ie11四大浏览 ...
- hbase源码分析:ERROR: Table already exists问题诊断
问题描述: 重新安装了测试环境的hadoop,所以之前hbase所建的表数据都丢失了,但是zookeeper没有动.在hbase shell中list的时候,看不到之前建的表,但是create tes ...
- React.js 简介
React.js 是一个帮助你构建页面 UI 的库.如果你熟悉 MVC 概念的话,那么 React 的组件就相当于 MVC 里面的 View.如果你不熟悉也没关系,你可以简单地理解为,React.js ...
- .net主站和二级域名下实现session共享
public class CrossDomainCookie : IHttpModule { private string m_RootDomain = string.Empty; #region I ...
- poj3685 Matrix
思路: 二分套二分. 矩阵在每一列上是严格递增的,可以利用这一点进行二分. 实现: #include <cstdio> #include <cmath> #include &l ...
- CSS3 按钮特效(一)
1. 实例 2.HTML 代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset ...