// 函数功能: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. JMeter特点&性能测试工具选型的原则&模拟压力的原理

    1.JMeter自身的特点 1)开源.轻量级.更适合自动化和持续集成(100M左右,LoadRunner 4G左右) 2)学习难度大 3)资料少.全英文 2. 性能测试工具选型的原则 1)成本 a.工 ...

  2. CF1072A Palindromic Twist 思维

    Palindromic Twist time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...

  3. CodeForces Round 525

    A:Ehab and another construction problem #include<bits/stdc++.h> using namespace std; #define F ...

  4. 计蒜客 ACM训练联盟周赛 第一场 Alice和Bob的Nim游戏 矩阵快速幂

    题目描述 众所周知,Alice和Bob非常喜欢博弈,而且Alice永远是先手,Bob永远是后手. Alice和Bob面前有3堆石子,Alice和Bob每次轮流拿某堆石子中的若干个石子(不可以是0个), ...

  5. java多线程之ThreadPoolExecutor

    ThreadPoolExecutor类 简介   java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心的一个类,因此如果要透彻地了解Java中的线程池,必须 ...

  6. 3、循环链表(java实现)

    1.节点类 public class Node<T> { public T data; public Node next; } 2.实现类 public class CircularLin ...

  7. mysql解压版服务启动方式

    使用mysql解压版,在不安装为windows服务时,使用下面的方式启动. 1.打开命令行,首先进入mysql解压目录的bin目录下 d:\mysql\bin 2.输入mysqld --console ...

  8. 安卓APP开发简单实例 结对编程心得

    开始说起搞APP开发,自己和小伙伴的编程水平真的很低,无从下手,只有在网上找点案列,学习着怎样开发,结对编程还是面临着许多问题的,大家的水平有所差异和编程风格不同,我们用eclipse做了一个仿微信登 ...

  9. TestNG(三) 基本注解BeforeMethod和AfterMethod

    package com.course.testng; import org.testng.annotations.*; public class BasicAnnotation { @Test //最 ...

  10. Docker下实战zabbix三部曲之一:极速体验

    对于想学习和实践zabbix的读者来说,在真实环境搭建一套zabbix系统是件费时费力的事情,本文内容就是用docker来缩减搭建时间,目标是让读者们尽快投入zabbix系统的体验和实践: 环境信息 ...