// 函数功能:1秒以后创建一个10以内的随机整数,并判断这个数是否为偶数;如果是偶数则做一件事情,如果是奇数则做另一件事情
function doSomthing() {
var promise = new Promise(function (resolve, reject) {
setTimeout(function () {
const num = Math.round(Math.random() * 10);
if (num % 2 === 0) {
resolve(num);
} else {
reject(num);
}
}, 1000);
});
return promise;
}
      // 调用方法,得到Promise对象,并在Promise中的事情执行完成之前,预先指定成功和失败的回调函数
// 成功和失败的回调函数,分别对应new这个Promise对象时,传递的匿名function中的resolve和reject这两个形参
doSomthing().then(function (val) {
console.log('第一次偶数:' + val);
return doSomthing(); // 当事情处理完毕之后,可以return一个新的Promise对象,并继续使用.then指定下一次的回调函数
}, function (val) {
console.log('第一次奇数:' + val);
return doSomthing();
}).then(function (val) {
console.log('第二次偶数:' + val);
return doSomthing();
}, function (val) {
console.log('第二次奇数:' + val);
return doSomthing();
}).then(function (val) {
console.log('第三次偶数:' + val);
}, function (val) {
console.log('第三次奇数:' + val);
});
Promise总结:
  1. Promise表示要做一件事,要做的事情,需要在new Promise对象的时候指定
  2. 一旦这个Promise对象new出来之后,则立即就会去做这个Promise对象中指定的事情(所以如果不想立即做这件事,可以将new Promise对象的过程放在一个方法中)
  3. 做任何事情都有一个过程,所以在这个Promise中的事情做完之前,我们不知道这件事最终执行的结果是成功还是失败,
  4. 但我们可以肯定的是,这个事情做完之后,肯定有一个执行的结果,要么这件事做成功了,要么这件事做失败了,且会将这个执行结果进行相关操作;
  5. 所以,我们可以提前为这个Promise对象,通过resolve方法指定成功之后的处理函数,通过reject方法指定失败之后的处理函数
  6. 那么,如何提前指定resolve和reject这两个处理函数呢?可以在Promise对象身上,调用.then(成功回调函数,失败回调函数)方法预先指定成功和失败的处理函数!
  7. 这样,当Promise对象中的事情做完之后,就会调用预定义的成功或失败处理函数
  8. 在成功和失败的处理函数内部,又可以创建一个新的Promise对象,来执行下一件事情,并通过下一个.then预先指定成功和失败的回调函数!

Javascript中Promise的简单使用的更多相关文章

  1. 全面理解Javascript中Promise

    全面理解Javascript中Promise 最近在学习Promise的时候,在网上收集了一些资料,发现很多的知识点不够系统,所以小编特意为大家整理了一些自认为 比较好的文章,供大家更好地学习js中非 ...

  2. javascript中闭包最简单的简绍

    javascript中闭包是什么 JavaScript 变量可以是局部变量或全局变量.私有变量可以用到闭包.闭包就是将函数内部和函数外部连接起来的一座桥梁. 函数的闭包使用场景:比如我们想要一个函数来 ...

  3. JavaScript中 Promise的学习以及使用

    今天一个哥们发过来一段js代码,没看懂,就顺便学习了一下,代码如下  Promise.resolve('zhangkai').then(value => {console.log(value)} ...

  4. javascript 中 Promise的使用

    有点经验的js前端都知道  ajax异步函数里面的结果不会立即返回,如果你想在一个异步函数得到某个结果后去执行一个语句怎么做? if ( 异步函数 ) { 语句 }  可能很多人都踩过这样坑,这个时候 ...

  5. 浅谈Javascript中Promise对象的实现

    https://segmentfault.com/a/1190000000684654 What? Promise是CommonJS的规范之一,拥有resolve.reject.done.fail.t ...

  6. JavaScript中对事件简单的理解(1)

    事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...

  7. JavaScript中对事件简单的理解

    事件(event) 1.什么是JavaScript事件? 事件是文档或浏览器中发生的特定交互瞬间. 2.事件流 事件流描述的是从页面中接受事件的顺序,包含IE提出的事件冒泡流与Netscape提出的事 ...

  8. JavaScript中Promise 使用、原理以及实现过程

    1.什么是 Promise promise 是目前 JS 异步编程的主流解决方案,遵循 Promises/A+ 方案. 2.Promise 原理简析 (1)promise 本身相当于一个状态机,拥有三 ...

  9. JavaScript中对事件简单的理解(2)

    事件(event) event对象 (1)什么是event对象? Event 对象代表事件的状态,比如事件在其中发生的元素.键盘按键的状态.鼠标的位置.鼠标按钮的状态.事件通常与函数结合使用,函数不会 ...

随机推荐

  1. 牛客小白月赛6 I 公交线路 最短路 模板题

    链接:https://www.nowcoder.com/acm/contest/136/I来源:牛客网 题目描述 P市有n个公交站,之间连接着m条道路.P市计划新开设一条公交线路,该线路从城市的东站( ...

  2. hdu2082 找单词 母函数模板

    找单词 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submiss ...

  3. Light It Up CF1000B 思维

    Light It Up time limit per test 1 second memory limit per test 256 megabytes input standard input ou ...

  4. POJ 3786 dp-递推 Adjacent Bit Counts *

    Adjacent Bit Counts Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 599   Accepted: 502 ...

  5. 洛谷P5335 [THUSC2016]补退选 题解

    传送门 一道字典树的例题吧 先说下思路前1,2两个条件都易满足,字典树插入修改即可,第三个条件可用动态数组来实现,存下它的size表示当前有几个节点经过(即人数),其下标表示第几次出现,里面存入操作次 ...

  6. Flask源码浅析

    前言 学习一样东西,要先知其然,然后知其所以然. 这次,我们看看Flask Web框架的源码.我会以Flask 0.1的源码为例,把重点放在Flask如何处理请求上,看一看从一个请求到来到返回响应都经 ...

  7. mysql之innodb日志管理

    本文从两个方面进行阐述,常规的日志文件(不区分存储引擎),第二就是讲innodb存储引擎的事务日志. 一.基本日志文件 1.1.基本日志文件分类:错误日志(error log)慢查询日志日志(slow ...

  8. 【Offer】[53-1] 【数字在排序数组中出现的次数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出 ...

  9. 【Offer】[10-2] 【青蛙跳阶问题】

    题目描述 思路分析 Java代码 代码链接 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 思路分析 其实就是斐波那契 ...

  10. 服务器扩容SAN存储

    串行登陆10.10.10.1/2/3/4 1.备份系统信息 mkdir -p /bakinfo df -h > /bakinfo/df.txt_`date +%Y%m%d%H%M%S` ps - ...